List.AssocInterpret 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... include Sexpable.S2 with type ('a, 'b) t := ( 'a, 'b ) tval t_of_sexp : 
  ( Sexplib0__.Sexp.t -> 'a ) ->
  ( Sexplib0__.Sexp.t -> 'b ) ->
  Sexplib0__.Sexp.t ->
  ( 'a, 'b ) tval sexp_of_t : 
  ( 'a -> Sexplib0__.Sexp.t ) ->
  ( 'b -> Sexplib0__.Sexp.t ) ->
  ( 'a, 'b ) t ->
  Sexplib0__.Sexp.tval find : ( 'a, 'b ) t -> equal:( 'a -> 'a -> bool ) -> 'a -> 'b optionval find_exn : ( 'a, 'b ) t -> equal:( 'a -> 'a -> bool ) -> 'a -> 'bval mem : ( 'a, 'b ) t -> equal:( 'a -> 'a -> bool ) -> 'a -> bool