module BatBounded:sig
..end
Bounded values
This module implements values which must fall within given bounds.
type'a
bound_t =[ `c of 'a | `o of 'a | `u ]
`o
pen or `c
losed or `u
nbounded bounds
type('a, 'b)
bounding_f =bounds:'a bound_t * 'a bound_t -> 'a -> 'b
The type of a bounding function with limits specified by bounds
val bounding_of_ord : default_low:'b ->
default_high:'b ->
('a -> 'b) -> ('a -> 'a -> BatOrd.order) -> ('a, 'b) bounding_f
bounding_of_ord ~default_low ~default_high conv ord
will returning a
bounding function using ord
for value comparison and default_low
and
default_high
for values which fall outside of the requested range.
conv
is used to convert values which are in-range to the result type.
val bounding_of_ord_chain : low:('a -> 'b) ->
high:('a -> 'b) ->
('a -> 'b) -> ('a -> 'a -> BatOrd.order) -> ('a, 'b) bounding_f
bounding_of_ord_chain ?low ?high ord
is like BatBounded.bounding_of_ord
except
that functions are used to handle out of range values rather than single
default values.
val saturate_of_ord : bounds:'a bound_t * 'a bound_t ->
('a -> 'a -> BatOrd.order) -> 'a -> 'a
saturate_of_ord ~bounds:(low, high) ord
will returning a bounding
function using ord
for value comparison and low
and high
for values
which fall outside of the requested range.
val opt_of_ord : bounds:'a bound_t * 'a bound_t ->
('a -> 'a -> BatOrd.order) -> 'a -> 'a option
opt_of_ord ~bounds:(low, high) ord
will returning a bounding function
using ord
for value comparison and None
for values which fall outside
of the requested range.
module type BoundedType =sig
..end
module type BoundedNumericType =sig
..end
module type S =sig
..end
module type NumericSig =sig
..end
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
module MakeNumeric:functor (
M
:
BoundedNumericType
) ->
NumericSig
with type base_u = M.base_t
with type u = M.t
with type t = private M.t