Monad.Basic3_indexedArgument to Make*. This module type subsumes the other Basic* types below.
val return : 'a 'i 'p 'q. 'a -> ('a, 'i, 'i, 'p, 'q) tval map :
'a 'b 'i 'j 'p 'q. [ `Define_using_bind
| `Custom of
('a, 'i, 'j, 'p, 'q) t ->
f:('a -> 'b) ->
('b, 'i, 'j, 'p, 'q) t ]`Define_using_bind defines map as bind t ~f:(fun x -> return x). `Custom overrides the default, presumably with something more efficient.
Some functions returned by Make* are defined in terms of map. Providing an efficient map improves them as well.