Module 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 = Core_kernel__.Binable0module Map = Base.Mapmodule Or_duplicate = Map.Or_duplicatemodule With_comparator = Map.With_comparatormodule With_first_class_module = Map.With_first_class_modulemodule Without_comparator = Map.Without_comparatormodule Tree = Map.Using_comparator.Treemodule type Key_plain = sig ... endmodule type Key = sig ... endmodule type Key_binable = sig ... endmodule type Key_hashable = sig ... endmodule type Key_binable_hashable = sig ... endmodule Key_bin_io : sig ... endmodule type Accessors_generic = sig ... endmodule type Accessors1 = sig ... endmodule type Accessors2 = sig ... endmodule type Accessors3 = sig ... endmodule type Accessors3_with_comparator = sig ... endmodule Check_accessors : functor (T : Core_kernel__.T.T3) -> functor (Tree : Core_kernel__.T.T3) -> functor (Key : Core_kernel__.T.T1) -> functor (Cmp : Core_kernel__.T.T1) -> functor (Options : Core_kernel__.T.T3) -> functor (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 ... endConsistency checks (same as in
Container).
module Check_accessors1 : functor (M : Accessors1) -> sig ... endmodule Check_accessors2 : functor (M : Accessors2) -> sig ... endmodule Check_accessors3 : functor (M : Accessors3) -> sig ... endmodule Check_accessors3_with_comparator : functor (M : Accessors3_with_comparator) -> sig ... endmodule type Creators_generic = sig ... endmodule type Creators1 = sig ... endmodule type Creators2 = sig ... endmodule type Creators3_with_comparator = sig ... endmodule Check_creators : functor (T : Core_kernel__.T.T3) -> functor (Tree : Core_kernel__.T.T3) -> functor (Key : Core_kernel__.T.T1) -> functor (Cmp : Core_kernel__.T.T1) -> functor (Options : Core_kernel__.T.T3) -> functor (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 ... endmodule Check_creators1 : functor (M : Creators1) -> sig ... endmodule Check_creators2 : functor (M : Creators2) -> sig ... endmodule Check_creators3_with_comparator : functor (M : Creators3_with_comparator) -> sig ... endmodule type Creators_and_accessors_generic = sig ... endmodule type Creators_and_accessors1 = sig ... endmodule type Creators_and_accessors2 = sig ... endmodule type Creators_and_accessors3_with_comparator = sig ... endmodule Make_S_plain_tree : functor (Key : Comparator.S) -> sig ... endmodule type S_plain = sig ... endmodule type S = sig ... endmodule type S_binable = sig ... endmodule type For_deriving = Map.For_deriving