-
travesty
-
-
travesty.containers
-
-
travesty.core_kernel_exts
Library
Module
Module type
Parameter
Class
Class type
Simultaneous mapping and filtering.
Filter_mappable
contains signatures and extensions for types that can be non-monadically mapped over, while simultaneously removing values.
Signatures
Filter_mappable_intf contains the signatures for Filter_mappable
.
include module type of Filter_mappable_intf
Basic signatures
The basic signatures are Basic0, which defines filtered mapping across an arity-0 type t
(with a fixed, associated element type elt
), and Basic1, which defines filtered mapping across an arity-1 type 'a t
(with element type 'a
).
The generic basic signature
As with Traversable and Mappable, we define the basic and full signatures of filter-mappable structures in an arity-generic way, then specialise them for arity-0 and arity-1 types.
module type Generic_basic = sig ... end
Generic input shape of filter-mappable structures on either an arity-0 or arity-1 type.
Arity-0 and arity-1 basic signatures
module type Basic0 = sig ... end
Basic signature of an arity-0 filter-mappable type.
module type Basic1 = sig ... end
Basic signature of an arity-1 mappable type.
Full signatures
The full signatures are S0 (arity-0) and S1 (arity-1).
The generic signature
module type Generic = sig ... end
Generic output shape of filter-mappable structures on either an arity-0 or arity-1 type.
Arity-0 and arity-1 full signatures
module type S0 = sig ... end
Full signature of an arity-0 filter-mappable type.
module type S1 = sig ... end
Full signature of an arity-1 mappable type.
Making full instances from basic ones
Deriving Mappable
module To_mappable0
(F : Basic0) :
Mappable.S0 with type t := F.t and type elt := F.elt
To_mappable0
lowers a filter-mappable arity-0 type to a mappable one.
module To_mappable1 (F : Basic1) : Mappable.S1 with type 'a t := 'a F.t
To_mappable1
lowers a filter-mappable arity-1 type to a mappable one.