summaryrefslogtreecommitdiff
path: root/lib/ur/option.ur
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-06-09 18:11:59 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-06-09 18:11:59 -0400
commitb7de8e9ac590f9d06df72d22489375b33a6efef9 (patch)
treefdefe678f8d11c1efad8dbe6d535da8ccb531f59 /lib/ur/option.ur
parent4c8297c1f381599333e998da585f4ef5ac24383b (diff)
Some standard library reorgs and additions; handle mutual datatypes better in Specialize
Diffstat (limited to 'lib/ur/option.ur')
-rw-r--r--lib/ur/option.ur12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/ur/option.ur b/lib/ur/option.ur
index 5ec093c0..1f044002 100644
--- a/lib/ur/option.ur
+++ b/lib/ur/option.ur
@@ -1,5 +1,12 @@
datatype t = datatype Basis.option
+fun eq [a] (_ : eq a) =
+ mkEq (fn x y =>
+ case (x, y) of
+ (None, None) => True
+ | (Some x, Some y) => x = y
+ | _ => False)
+
fun isSome [a] x =
case x of
None => False
@@ -9,3 +16,8 @@ fun mp [a] [b] f x =
case x of
None => None
| Some y => Some (f y)
+
+fun bind [a] [b] f x =
+ case x of
+ None => None
+ | Some y => f y