diff --git a/src/core/CCEqual.mli b/src/core/CCEqual.mli index f940a56c..0ebc13c4 100644 --- a/src/core/CCEqual.mli +++ b/src/core/CCEqual.mli @@ -1,3 +1,5 @@ +(* AUTOGENERATED FROM CCEqualLabels.mli *) + (* This file is free software, part of containers. See file "license" for more details. *) diff --git a/src/core/CCEqualLabels.ml b/src/core/CCEqualLabels.ml new file mode 100644 index 00000000..63c6f1f8 --- /dev/null +++ b/src/core/CCEqualLabels.ml @@ -0,0 +1,4 @@ + +(* This file is free software, part of containers. See file "license" for more details. *) + +include CCEqual diff --git a/src/core/CCEqualLabels.mli b/src/core/CCEqualLabels.mli new file mode 100644 index 00000000..52b91f9e --- /dev/null +++ b/src/core/CCEqualLabels.mli @@ -0,0 +1,44 @@ + +(* This file is free software, part of containers. See file "license" for more details. *) + +(** {1 Equality Combinators} *) + +(** @since 1.2 *) + +type 'a t = 'a -> 'a -> bool +(** Equality function. Must be transitive, symmetric, and reflexive. *) + +val poly : 'a t +(** Standard polymorphic equality. *) + +val physical : 'a t +(** Standard physical equality. + @since 2.0 *) + +val int : int t +val string : string t +val bool : bool t +val float : float t +val unit : unit t + +val list : 'a t -> 'a list t +val array : 'a t -> 'a array t + +val option : 'a t -> 'a option t +val pair : 'a t -> 'b t -> ('a * 'b) t +val triple : 'a t -> 'b t -> 'c t -> ('a * 'b * 'c) t + +val map : f:('a -> 'b) -> 'b t -> 'a t +(** [map f eq] is the equality function that, given objects [x] and [y], + projects [x] and [y] using [f] (e.g. using a record field) and then + compares those projections with [eq]. + Example: + [map fst int] compares values of type [(int * 'a)] by their + first component. *) + +module Infix : sig + val (>|=) : 'b t -> ('a -> 'b) -> 'a t + (** Infix equivalent of {!map}. *) +end + +include module type of Infix diff --git a/src/core/containers.ml b/src/core/containers.ml index 5b4d0d9b..cd572fa0 100644 --- a/src/core/containers.ml +++ b/src/core/containers.ml @@ -10,6 +10,7 @@ module Array_sliceLabels = CCArray_sliceLabels module Bool = CCBool module Char = Char module Equal = CCEqual +module EqualLabels = CCEqualLabels module Float = CCFloat module Format = CCFormat module Fun = CCFun diff --git a/src/core/dune b/src/core/dune index 8578dbe1..fdc7f038 100644 --- a/src/core/dune +++ b/src/core/dune @@ -10,6 +10,12 @@ (mode promote) (action (run ../unlabel.exe %{deps} %{targets}))) +(rule + (targets CCEqual.mli) + (deps CCEqualLabels.mli) + (mode promote) + (action (run ../unlabel.exe %{deps} %{targets}))) + (rule (targets CCList.mli) (deps CCListLabels.mli)