`functor (M : BoundedNumericType) -> 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 val ( + ) : t -> base_u -> t val ( - ) : t -> base_u -> t val ( * ) : t -> base_u -> t val ( / ) : t -> base_u -> t val ( +: ) : t -> t -> t val ( -: ) : t -> t -> t val ( *: ) : t -> t -> t val ( /: ) : t -> t -> t end`