Parameter Make2.1-M

type ('a, 'e) t

(a,e) t is a type of monad, where a is a type of computation values, and e is a type of some extra information attached to the computation, usually a type of environment.

val bind : ( 'a, 'e ) t -> ( 'a -> ( 'b, 'e ) t ) -> ( 'b, 'e ) t

bind m f passes the result of computation m to function f

val map : [ `Define_using_bind | `Custom of ( 'a, 'e ) t -> f:( 'a -> 'b ) -> ( 'b, 'e ) t ]

map function can be derived from bind or provided explicitly

val return : 'a -> ( 'a, _ ) t

return x creates a trivial computation that results in x