Module BatBounded.Make

Functor to build an implementation of a bounded type given the bounded values definition M

Parameters

module M : BoundedType

Signature

type base_u = M.base_t

Raw unbounded type

type u = M.t

base_u after bounding constraints have been applied

type t = private M.t

Private version of u to avoid construction of t values without using make below.

val bounds : base_u bound_t * base_u 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 t derived from x.

val extract : t -> u

extract x will return x as a value of type 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 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 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 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 base_u, otherwise raise an exception.