Module List.Assoc

Interpret a list of (key, value) pairs as a map in which only the first occurrence of a key affects the semantics, i.e.:

List.Assoc.xxx alist ...args... 

is always the same as (or at least sort of isomorphic to):

Map.xxx (alist |> Map.of_alist_multi |> Map.map ~f:List.hd) ...args... 
type ('a, 'b) t = ('a * 'b) list
include Sexpable.S2 with type ('a, 'b) t := ( 'a, 'b ) t
val t_of_sexp : ( Sexplib0__.Sexp.t -> 'a ) -> ( Sexplib0__.Sexp.t -> 'b ) -> Sexplib0__.Sexp.t -> ( 'a, 'b ) t
val sexp_of_t : ( 'a -> Sexplib0__.Sexp.t ) -> ( 'b -> Sexplib0__.Sexp.t ) -> ( 'a, 'b ) t -> Sexplib0__.Sexp.t
val add : ( 'a, 'b ) t -> equal:( 'a -> 'a -> bool ) -> 'a -> 'b -> ( 'a, 'b ) t
val find : ( 'a, 'b ) t -> equal:( 'a -> 'a -> bool ) -> 'a -> 'b option
val find_exn : ( 'a, 'b ) t -> equal:( 'a -> 'a -> bool ) -> 'a -> 'b
val mem : ( 'a, 'b ) t -> equal:( 'a -> 'a -> bool ) -> 'a -> bool
val remove : ( 'a, 'b ) t -> equal:( 'a -> 'a -> bool ) -> 'a -> ( 'a, 'b ) t
val map : ( 'a, 'b ) t -> f:( 'b -> 'c ) -> ( 'a, 'c ) t
val inverse : ( 'a, 'b ) t -> ( 'b, 'a ) t

Bijectivity is not guaranteed because we allow a key to appear more than once.