diff options
author | 2009-06-09 18:11:59 -0400 | |
---|---|---|
committer | 2009-06-09 18:11:59 -0400 | |
commit | f6cfaea8a7eb777dae12337178c3b9a268459995 (patch) | |
tree | fdefe678f8d11c1efad8dbe6d535da8ccb531f59 /lib/ur/option.ur | |
parent | b64c799498c352096f89e1e0ab7a75ab14565d3a (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.ur | 12 |
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 |