Core_kernel.Map_intf
This module defines interfaces used in Map
. See those docs for a description of the design.
This module defines module types {Creators,Accessors}{1,2,3,_generic,_with_comparator}
. It uses check functors to ensure that each module type is an instance of the corresponding _generic
one.
We must treat Creators
and Accessors
separately, because we sometimes need to choose different instantiations of their options
. In particular, Map
itself matches Creators3_with_comparator
but Accessors3
(without comparator).
module Binable : sig ... end
module Map = Base.Map
module Or_duplicate = Map.Or_duplicate
module With_comparator = Map.With_comparator
module With_first_class_module = Map.With_first_class_module
module Without_comparator = Map.Without_comparator
module Tree = Map.Using_comparator.Tree
module type Key_plain = sig ... end
module type Key = sig ... end
module type Key_binable = sig ... end
module type Key_hashable = sig ... end
module type Key_binable_hashable = sig ... end
module Key_bin_io : sig ... end
module type Accessors_generic = sig ... end
module type Accessors1 = sig ... end
module type Accessors2 = sig ... end
module type Accessors3 = sig ... end
module type Accessors3_with_comparator = sig ... end
module Check_accessors (T : sig ... end) (Tree : sig ... end) (Key : sig ... end) (Cmp : sig ... end) (Options : sig ... end) (M : Accessors_generic with type
('a, 'b, 'c) options := ('a, 'b, 'c) Options.t with type ('a, 'b, 'c) t
:= ('a, 'b, 'c) T.t with type ('a, 'b, 'c) tree := ('a, 'b, 'c) Tree.t with type 'a key
:= 'a Key.t with type 'a cmp := 'a Cmp.t) : sig ... end
Consistency checks (same as in Container
).
module Check_accessors1 (M : Accessors1) : sig ... end
module Check_accessors2 (M : Accessors2) : sig ... end
module Check_accessors3 (M : Accessors3) : sig ... end
module Check_accessors3_with_comparator (M : Accessors3_with_comparator) : sig ... end
module type Creators_generic = sig ... end
module type Creators1 = sig ... end
module type Creators2 = sig ... end
module type Creators3_with_comparator = sig ... end
module Check_creators (T : sig ... end) (Tree : sig ... end) (Key : sig ... end) (Cmp : sig ... end) (Options : sig ... end) (M : Creators_generic with type
('a, 'b, 'c) options := ('a, 'b, 'c) Options.t with type ('a, 'b, 'c) t
:= ('a, 'b, 'c) T.t with type ('a, 'b, 'c) tree := ('a, 'b, 'c) Tree.t with type 'a key
:= 'a Key.t with type 'a cmp := 'a Cmp.t) : sig ... end
module Check_creators1 (M : Creators1) : sig ... end
module Check_creators2 (M : Creators2) : sig ... end
module Check_creators3_with_comparator (M : Creators3_with_comparator) : sig ... end
module type Creators_and_accessors_generic = sig ... end
module type Creators_and_accessors1 = sig ... end
module type Creators_and_accessors2 = sig ... end
module type Creators_and_accessors3_with_comparator = sig ... end
module Make_S_plain_tree (Key : Comparator.S) : sig ... end
module type S_plain = sig ... end
module type S = sig ... end
module type S_binable = sig ... end
module type For_deriving = sig ... end