- type ('a,'r) monad = ('a -> 'r) -> 'r;;
- let unit a : ('a,'r) monad = fun k -> k a;;
- let bind (u: ('a,'r) monad) (f: 'a -> ('b,'r) monad) : ('b,'r) monad =
+ type ('r,'a) monad = ('a -> 'r) -> 'r;;
+ let unit a : ('r,'a) monad = fun k -> k a;;
+ let bind (u: ('r,'a) monad) (f: 'a -> ('r,'b) monad) : ('r,'b) monad =