@@ -12,8 +12,7 @@ module Type.Data.Ordering
12
12
, equals
13
13
) where
14
14
15
- import Prim.Ordering as PO -- refer to kind Ordering via `PO.Ordering`
16
- import Prim.Ordering (LT , EQ , GT )
15
+ import Prim.Ordering (LT , EQ , GT , Ordering ) as PO
17
16
import Data.Ordering (Ordering (..))
18
17
import Type.Data.Boolean (True , False , BProxy (..))
19
18
import Type.Proxy (Proxy (..))
@@ -27,49 +26,49 @@ class IsOrdering :: PO.Ordering -> Constraint
27
26
class IsOrdering ordering where
28
27
reflectOrdering :: forall proxy . proxy ordering -> Ordering
29
28
30
- instance isOrderingLT :: IsOrdering LT where reflectOrdering _ = LT
31
- instance isOrderingEQ :: IsOrdering EQ where reflectOrdering _ = EQ
32
- instance isOrderingGT :: IsOrdering GT where reflectOrdering _ = GT
29
+ instance isOrderingLT :: IsOrdering PO. LT where reflectOrdering _ = LT
30
+ instance isOrderingEQ :: IsOrdering PO. EQ where reflectOrdering _ = EQ
31
+ instance isOrderingGT :: IsOrdering PO. GT where reflectOrdering _ = GT
33
32
34
33
-- | Use a value level `Ordering` as a type-level `Ordering`
35
34
reifyOrdering :: forall r . Ordering -> (forall proxy o . IsOrdering o => proxy o -> r ) -> r
36
- reifyOrdering LT f = f (Proxy :: Proxy LT )
37
- reifyOrdering EQ f = f (Proxy :: Proxy EQ )
38
- reifyOrdering GT f = f (Proxy :: Proxy GT )
35
+ reifyOrdering LT f = f (Proxy :: Proxy PO. LT )
36
+ reifyOrdering EQ f = f (Proxy :: Proxy PO. EQ )
37
+ reifyOrdering GT f = f (Proxy :: Proxy PO. GT )
39
38
40
39
-- | Append two `Ordering` types together
41
40
-- | Reflective of the semigroup for value level `Ordering`
42
41
class Append :: PO.Ordering -> PO.Ordering -> PO.Ordering -> Constraint
43
42
class Append lhs rhs output | lhs -> rhs output
44
- instance appendOrderingLT :: Append LT rhs LT
45
- instance appendOrderingEQ :: Append EQ rhs rhs
46
- instance appendOrderingGT :: Append GT rhs GT
43
+ instance appendOrderingLT :: Append PO. LT rhs PO. LT
44
+ instance appendOrderingEQ :: Append PO. EQ rhs rhs
45
+ instance appendOrderingGT :: Append PO. GT rhs PO. GT
47
46
48
47
append :: forall l r o . Append l r o => OProxy l -> OProxy r -> OProxy o
49
48
append _ _ = OProxy
50
49
51
50
-- | Invert an `Ordering`
52
51
class Invert :: PO.Ordering -> PO.Ordering -> Constraint
53
52
class Invert ordering result | ordering -> result
54
- instance invertOrderingLT :: Invert LT GT
55
- instance invertOrderingEQ :: Invert EQ EQ
56
- instance invertOrderingGT :: Invert GT LT
53
+ instance invertOrderingLT :: Invert PO. LT PO. GT
54
+ instance invertOrderingEQ :: Invert PO. EQ PO. EQ
55
+ instance invertOrderingGT :: Invert PO. GT PO. LT
57
56
58
57
invert :: forall i o . Invert i o => OProxy i -> OProxy o
59
58
invert _ = OProxy
60
59
61
60
class Equals :: PO.Ordering -> PO.Ordering -> Boolean -> Constraint
62
61
class Equals lhs rhs out | lhs rhs -> out
63
62
64
- instance equalsEQEQ :: Equals EQ EQ True
65
- instance equalsLTLT :: Equals LT LT True
66
- instance equalsGTGT :: Equals GT GT True
67
- instance equalsEQLT :: Equals EQ LT False
68
- instance equalsEQGT :: Equals EQ GT False
69
- instance equalsLTEQ :: Equals LT EQ False
70
- instance equalsLTGT :: Equals LT GT False
71
- instance equalsGTLT :: Equals GT LT False
72
- instance equalsGTEQ :: Equals GT EQ False
63
+ instance equalsEQEQ :: Equals PO. EQ PO. EQ True
64
+ instance equalsLTLT :: Equals PO. LT PO. LT True
65
+ instance equalsGTGT :: Equals PO. GT PO. GT True
66
+ instance equalsEQLT :: Equals PO. EQ PO. LT False
67
+ instance equalsEQGT :: Equals PO. EQ PO. GT False
68
+ instance equalsLTEQ :: Equals PO. LT PO. EQ False
69
+ instance equalsLTGT :: Equals PO. LT PO. GT False
70
+ instance equalsGTLT :: Equals PO. GT PO. LT False
71
+ instance equalsGTEQ :: Equals PO. GT PO. EQ False
73
72
74
73
equals :: forall l r o . Equals l r o => OProxy l -> OProxy r -> BProxy o
75
74
equals _ _ = BProxy
0 commit comments