val return : 'a ‑> 'a tThe following identities ought to hold (for some value of =):
return x >>= f = f xt >>= fun x -> return x = t(t >>= f) >>= g = t >>= fun x -> (f x >>= g)Note: >>= is the infix notation for bind)
The map argument to Monad.Make says how to implement the monad's map function.
`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.