Parameter Make.X

include Basic
type 'a t
val return : 'a 'p 'q. 'a -> 'a t
val apply : 'a 'b 'p 'q. ('a -> 'b) t -> 'a t -> 'b t
val map : 'a 'b 'p 'q. [ `Define_using_apply | `Custom of 'a t -> f:('a -> 'b) -> 'b t ]

`Define_using_map2 defines map as apply (return f) t. `Custom overrides the default. Some functions returned by Make* are defined in terms of map. Providing an efficient map improves them as well.