summaryrefslogtreecommitdiff
path: root/lib/ur/option.ur
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ur/option.ur')
-rw-r--r--lib/ur/option.ur6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/ur/option.ur b/lib/ur/option.ur
index 0aa07a2d..5c89fc9d 100644
--- a/lib/ur/option.ur
+++ b/lib/ur/option.ur
@@ -1,5 +1,11 @@
datatype t = datatype Basis.option
+val monad = mkMonad {Return = @@Some,
+ Bind = fn [a] [b] (m1 : t a) (m2 : a -> t b) =>
+ case m1 of
+ None => None
+ | Some v => m2 v}
+
fun eq [a] (_ : eq a) =
mkEq (fn x y =>
case (x, y) of