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