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)
>>= is the infix notation for
map argument to
Monad.Make says how to implement the monad's
`Define_using_bind means to define
map t ~f = bind t ~f:(fun a -> return (f a)).
`Custom overrides the default implementation, presumably with something more efficient.
Some other functions returned by
Monad.Make are defined in terms of
map, so passing in a more efficient
map will improve their efficiency as well.