Travesty.Bi_mappable_types
The main groups of signatures provided by this module are:
We also define other signatures, mostly for internal book-keeping. They may be useful elsewhere, however.
As with Traversable
, we define the basic signature of bi-mappable structures in an arity-generic way, then specialise it for the various arities.
module type Basic_generic = sig ... end
Basic_generic
describes bi-mapping on any arity of type.
The basic signatures are Basic0
, which defines mapping across an arity-0 type t
(with a fixed, associated element type elt
); Basic1_left
and Basic1_right
, which fix the right and left element type respectively (leaving the named type floating); and Basic2
, which defines mapping across an arity-2 type ('l, 'r) t
with left element type 'l
and right element type 'r
.
module type Basic0 = sig ... end
Basic0
is the basic signature of an arity-0 bi-mappable type.
module type Basic1_left = sig ... end
Basic1_left
is the basic signature of an arity-1 bi-mappable type with a floating left type and fixed right type.
module type Basic1_right = sig ... end
Basic1_right
is the signature of an arity-1 bi-mappable type with a floating right type and fixed left type.
module type Basic2 = sig ... end
Basic2
is the signature of an arity-2 bi-mappable type with floating left and right types.
The signatures below include various functions we can derive from bi-mappable types.
module type Generic = sig ... end
Generic
is a generic interface for bi-mappable types, used to build S0
(arity-0) and S1
(arity-1).
module type S0 = sig ... end
S0
is the full signature of an arity-0 bi-mappable type.
module type S1_left = sig ... end
S1_left
is the full signature of an arity-1 bi-mappable type with a floating left type and fixed right type.
module type S1_right = sig ... end
S1_right
is the full signature of an arity-1 bi-mappable type with a floating right type and fixed left type.
module type S2 = sig ... end
S2
is the full signature of an arity-2 bi-mappable type with floating left and right types.