## Mercurial > urweb

### view lib/ur/option.ur @ 1272:56bd4a4f6e66

Find changesets by keywords (author, files, the commit message), revision
number or hash, or revset expression.

Some serious bug-fix work to get HTML example to compile; this includes fixing a bug with 'val' patterns in Unnest and the need for more local reduction in Especialize

author | Adam Chlipala <adamc@hcoop.net> |
---|---|

date | Thu, 03 Jun 2010 13:04:37 -0400 |

parents | 757dbac0454d |

children | a99b743a3087 |

line wrap: on

line source

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 ord [a] (_ : ord a) = mkOrd {Lt = fn x y => case (x, y) of (None, Some _) => True | (Some x, Some y) => x < y | _ => False, Le = fn x y => case (x, y) of (None, _) => True | (Some x, Some y) => x <= y | _ => False} fun isNone [a] x = case x of None => True | Some _ => False fun isSome [a] x = case x of None => False | Some _ => True 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 fun get [a] (x : a) (o : option a) = case o of None => x | Some v => v