comparison lib/ur/option.ur @ 1544:a99b743a3087

Basis.mkMonad
author Adam Chlipala <adam@chlipala.net>
date Fri, 19 Aug 2011 15:23:01 -0400
parents 757dbac0454d
children 36428d853c97
comparison
equal deleted inserted replaced
1543:6f046b4bad24 1544:a99b743a3087
1 datatype t = datatype Basis.option 1 datatype t = datatype Basis.option
2
3 val monad = mkMonad {Return = @@Some,
4 Bind = fn [a] [b] (m1 : t a) (m2 : a -> t b) =>
5 case m1 of
6 None => None
7 | Some v => m2 v}
2 8
3 fun eq [a] (_ : eq a) = 9 fun eq [a] (_ : eq a) =
4 mkEq (fn x y => 10 mkEq (fn x y =>
5 case (x, y) of 11 case (x, y) of
6 (None, None) => True 12 (None, None) => True