]> gitweb @ CieloNegro.org - Lucu.git/blob - Data/Eq/Indirect.hs
a7aa8d19a1f053b9abbbc44b9c893a03c17d6ae9
[Lucu.git] / Data / Eq / Indirect.hs
1 {-# LANGUAGE
2     FlexibleContexts
3   , TypeFamilies
4   , UnicodeSyntax
5   #-}
6 -- |FIXME: doc
7 module Data.Eq.Indirect
8     ( Eq'(..)
9     , (==:)
10     , (/=:)
11     , (≡:)
12     , (≢:)
13     , (≠:)
14     )
15     where
16 import Prelude.Unicode
17
18 infix 4 ==:{-, /=:, ≡:, ≢:, ≠:-}
19
20 -- |FIXME: doc
21 class Eq (Unified α) ⇒ Eq' α where
22     -- |FIXME: doc
23     type Unified α
24     -- |FIXME: doc
25     unify ∷ α → Unified α
26
27 -- |FIXME: doc
28 (==:) ∷ (Eq' α, Eq' β, Unified α ~ Unified β) ⇒ α → β → Bool
29 {-# INLINE (==:) #-}
30 (==:) = (∘ unify) ∘ (≡) ∘ unify
31
32 -- |FIXME: doc
33 (/=:) ∷ (Eq' α, Eq' β, Unified α ~ Unified β) ⇒ α → β → Bool
34 {-# INLINE (/=:) #-}
35 (/=:) = ((¬) ∘) ∘ (==:)
36
37 -- |FIXME: doc
38 (≡:) ∷ (Eq' α, Eq' β, Unified α ~ Unified β) ⇒ α → β → Bool
39 {-# INLINE CONLIKE (≡:) #-}
40 (≡:) = (==:)
41
42 -- |FIXME: doc
43 (≢:) ∷ (Eq' α, Eq' β, Unified α ~ Unified β) ⇒ α → β → Bool
44 {-# INLINE CONLIKE (≢:) #-}
45 (≢:) = (/=:)
46
47 -- |FIXME: doc
48 (≠:) ∷ (Eq' α, Eq' β, Unified α ~ Unified β) ⇒ α → β → Bool
49 {-# INLINE CONLIKE (≠:) #-}
50 (≠:) = (/=:)