jon.recoil.org

Module type Monad.Basic

type 'a t
include Misc.Stdlib.Monad.Basic2 with type ('a, _) t := 'a t
val bind : 'a t -> ('a -> 'b t) -> 'b t
val return : 'a -> 'a t

The following identities ought to hold (for some value of =):

  • return x >>= f = f x
  • t >>= fun x -> return x = t
  • (t >>= f) >>= g = t >>= fun x -> (f x >>= g)

Note: >>= is the infix notation for bind)