# Module Univ_map

    module Univ_map: sig .. end

Universal/heterogeneous maps.

These maps are useful for storing values of arbitrary type in a single map. In order to recover a value, it must be looked up with exactly the `Key.t` it was stored in. In other words, given different `Key.t`'s from the same `string`, one will not be able to recover the key stored in the other one.

This is similar to `Univ` in spirit.

    include Univ_map_intf

    include S

    module Make: functor (Data : sig
    type 'a t

    val sexp_of_t : ('a -> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.tend) -> S
      with type 'a data = 'a Data.t

    module Make1: functor (Data : sig
    type ('s, 'a) t

    val sexp_of_t : ('s -> Sexplib.Sexp.t) ->
           ('a -> Sexplib.Sexp.t) -> ('s, 'a) t -> Sexplib.Sexp.tend) -> S1
      with type ('s, 'a) data = ('s, 'a) Data.t

    module With_default: sig .. end

keys with associated default values, so that `find` is no longer partial

    module With_fold: sig .. end

keys that map to an accumulator value with an associated fold operation

    module Multi: sig .. end

list-accumulating keys with a default value of the empty list