base

Full standard library replacement for OCaml
IN THIS PACKAGE
Module Base . List . Assoc
type ('a, 'b) t = ('a * 'b) list
include Sexplib0.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 t_sexp_grammar : 'a Sexplib0.Sexp_grammar.t -> 'b Sexplib0.Sexp_grammar.t -> ( 'a, 'b ) t Sexplib0.Sexp_grammar.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.

val group : ('a * 'b) list -> equal:( 'a -> 'a -> bool ) -> ( 'a, 'b list ) t

Converts an association list with potential consecutive duplicate keys into an association list of (non-empty) lists with no (consecutive) duplicate keys. Any non-consecutive duplicate keys in the input will remain in the output.

val sort_and_group : ('a * 'b) list -> compare:( 'a -> 'a -> int ) -> ( 'a, 'b list ) t

Converts an association list with potential duplicate keys into an association list of (non-empty) lists with no duplicate keys.