ref: 87b9d6012af6af199b8304c67d2dbcf2365fd649
dir: /libstd/option.myr/
use "types.use"
use "fmt.use"
use "varargs.use"
pkg std =
type option(@a) = union
`Some @a
`None
;;
generic try : (v : option(@a), msg : byte[:], args : ... -> @a)
generic tryv : (v : option(@a), msg : byte[:], args : valist -> @a)
;;
generic try = {v, msg, args
-> tryv(v, msg, vastart(&args))
}
generic tryv = {v, msg, ap
match v
| `None: fatalv(1, msg, ap)
| `Some a: -> a
;;
}