Simultaneous mapping and filtering.
Filter_mappable contains signatures and extensions for types that can be non-monadically mapped over, while simultaneously removing values.
Filter_mappable_intf contains the signatures for
include module type of Filter_mappable_intf
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
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.
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
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.