import deriving 0.1.1a
[deriving.git] / lib / eq.mli
blob56c246a6c9cfc7609a75f36c71ff39cc7a8429c3
1 (* A module for SML-style equality, i.e. where equality of mutables is
2 physical equality and equality of immutables is structural equality.
3 *)
5 module type Eq =
6 sig
7 type a
8 val eq : a -> a -> bool
9 end
11 module Defaults (E : Eq) : Eq with type a = E.a
13 module Eq_immutable (S : sig type a end) : Eq with type a = S.a
14 module Eq_mutable (S : sig type a end) : Eq with type a = S.a
16 module Eq_int : Eq with type a = int
17 module Eq_num : Eq with type a = Num.num
18 module Eq_bool : Eq with type a = bool
19 module Eq_float : Eq with type a = float
20 module Eq_unit : Eq with type a = unit
21 module Eq_char : Eq with type a = char
22 module Eq_string : Eq with type a = string
23 module Eq_ref (E : Eq) : Eq with type a = E.a ref
24 module Eq_array (E : Eq) : Eq with type a = E.a array
25 module Eq_list (E : Eq) : Eq with type a = E.a list
26 module Eq_option (E : Eq): Eq with type a = E.a option
27 module Eq_map_s_t (E : Eq) (M : Map.S) : Eq with type a = E.a M.t