Mercurial > urweb
diff lib/ur/option.ur @ 846:0d30e6338c65
Some standard library reorgs and additions; handle mutual datatypes better in Specialize
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Tue, 09 Jun 2009 18:11:59 -0400 |
parents | 74a1e3bdf430 |
children | da3ec6014d2f |
line wrap: on
line diff
--- a/lib/ur/option.ur Tue Jun 09 11:12:34 2009 -0400 +++ b/lib/ur/option.ur Tue Jun 09 18:11:59 2009 -0400 @@ -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 @@ 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