module Make: functor (M : BoundedType) -> S with type base_u = M.base_t
with type u = M.t
with type t = private M.t
Functor to build an implementation of a bounded type given the bounded
values definition M
type base_u
Raw unbounded type
type u
type t = private u
val bounds : base_u BatBounded.bound_t *
base_u BatBounded.bound_t
bounds defines the (min, max) bounds for the bounded range
val make : base_u -> t
: t -> u
extract x will return
x as a value of type
BatBounded.S.u. A similar result
could be achieved with
(x :> u)
val map : (base_u -> base_u) ->
t -> t option
map f x applies
f to
x. Returns
Some y if
x can be converted
back to type
BatBounded.S.base_u, otherwise returns
None.
val map2 : (base_u -> base_u -> base_u) ->
t -> t -> t option
map f x y applies
f to
x and
y. Returns
Some z if
x and
y
can be converted back to type
BatBounded.S.base_u, otherwise returns
None.
val map_exn : (base_u -> base_u) ->
t -> t
map_exn f x applies
f to
x. Returns
y if
x can be converted
back to type
BatBounded.S.base_u, otherwise raise an exception.
val map2_exn : (base_u -> base_u -> base_u) ->
t -> t -> t
map f x y applies
f to
x and
y. Returns
z if
x and
y
can be converted back to type
BatBounded.S.base_u, otherwise raise an exception.