`functor (M : BoundedType) ->
sig
type base_u = M.base_t
type u = M.t
type t = private M.t
val bounds : base_u bound_t * base_u bound_t
val make : base_u -> t
external extract : t -> u = "%identity"
val map : (base_u -> base_u) -> t -> t option
val map2 : (base_u -> base_u -> base_u) -> t -> t -> t option
val map_exn : (base_u -> base_u) -> t -> t
val map2_exn : (base_u -> base_u -> base_u) -> t -> t -> t
end`