shithub: mc

ref: 682c4ce6114cb44e2ad95a75269585f6e1da8150
dir: /libstd/option.myr/

View raw version
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;;
	;;
}