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