ref: 0cae8df980a684eb9334e167765596b8e12b5728
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
;;
}