diff options
Diffstat (limited to 'lib/std/try.myr')
-rw-r--r-- | lib/std/try.myr | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/std/try.myr b/lib/std/try.myr new file mode 100644 index 0000000..da960ac --- /dev/null +++ b/lib/std/try.myr @@ -0,0 +1,38 @@ +use "result.use" +use "option.use" +use "fmt.use" + +pkg std = + generic try : (v : result(@a, @b) -> @a) + generic tryv : (v : result(@a, @b), d : @a -> @a) + generic get : (v : option(@a) -> @a) + generic getv : (v : option(@a), d : @a -> @a) +;; + +generic try = {v + match v + | `Ok x: -> x + | `Fail m: fatal("error: {}\n", m) + ;; +} + +generic tryv = {v, d + match v + | `Ok x: -> x + | `Fail m: -> d + ;; +} + +generic get = {v + match v + | `Some x: -> x + | `None: fatal("error: option had `None\n") + ;; +} + +generic getv = {v, d + match v + | `Some x: -> x + | `None: -> d + ;; +} |