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
Parameters: |
|
type
base_u
Raw unbounded type
type
u
BatBounded.S.base_u
after bounding constraints have been applied
typet = private
u
Private version of BatBounded.S.u
to avoid construction of BatBounded.S.t
values without
using make
below.
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
make x
will return a value of type BatBounded.S.t
derived from x
.
val extract : 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
map2 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
map2_exn 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.