A map that folds in new values.
An example would be a multi-map in which a key is initialized with the empty list as its value, and adding a new key/value pair appends the value to the key's list.
module Make : functor (Fold : Foldable) -> S with type in_value = Fold.data and type out_value = Fold.t
Builds a fold_map
Same as above but builds the sexp_of
and of_sexp
functions. Requires the
passed in types to be sexpable.
module type S_sexpable : sig ... end
module type Foldable_sexpable : sig ... end
module Make_sexpable : functor (Fold : Foldable_sexpable) -> S_sexpable with type in_value = Fold.data and type out_value = Fold.t
Polymorphic fold take a
module type Foldable2 : sig ... end
module type S2 : sig ... end
module type Foldable2_sexpable : sig ... end
module type S2_sexpable : sig ... end
module Make2_sexpable : functor (Fold : Foldable2_sexpable) -> S2_sexpable with type 'a out_value = 'a Fold.t
module Cons : S2_sexpable with type 'a out_value = 'a list
module Add : S_sexpable with type in_value = int and type out_value = int
A fold for adding. e.g. symbol positions
module Multiply : S_sexpable with type in_value = int and type out_value = int