Module Fold_map

module Fold_map: sig .. end
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 type Foldable = sig .. end
Input signature of the functor Fold_map.Make
module type S = sig .. end
Output signature of the functor Fold_map.Make
module Make: 
functor (Fold : Foldable) -> S with type in_value = Fold.data and type out_value = Fold.t
Builds a fold_map

Sexpable interface
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 folds

Polymorphic fold take a

module type Foldable2 = sig .. end
module type S2 = sig .. end
module Make2: 
functor (Fold : Foldable2) -> S2 with type 'a out_value = 'a Fold.t

Sexpable interface

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

Predefined modules


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.
module Multiply: S_sexpable 
  with type in_value  = int
  and  type out_value = int