11module Type.Data.Ordering
2- ( module Prim.Ordering
2+ ( module PO
33 , OProxy (..)
44 , class IsOrdering
55 , reflectOrdering
@@ -12,66 +12,64 @@ module Type.Data.Ordering
1212 , equals
1313 ) where
1414
15- import Prim.Ordering (kind Ordering , LT , EQ , GT )
15+ import Prim.Ordering (LT , EQ , GT , Ordering ) as PO
1616import Data.Ordering (Ordering (..))
17- import Type.Data.Boolean (kind Boolean , True , False , BProxy (..))
17+ import Type.Data.Boolean (True , False , BProxy (..))
18+ import Type.Proxy (Proxy (..))
1819
1920-- | Value proxy for `Ordering` types
20- data OProxy (ordering :: Ordering ) = OProxy
21+ -- | **Deprecated:** Use `Type.Proxy` instead
22+ data OProxy :: PO.Ordering -> Type
23+ data OProxy ordering = OProxy
2124
2225-- | Class for reflecting a type level `Ordering` at the value level
23- class IsOrdering (ordering :: Ordering ) where
24- reflectOrdering :: OProxy ordering -> Ordering
26+ class IsOrdering :: PO.Ordering -> Constraint
27+ class IsOrdering ordering where
28+ reflectOrdering :: forall proxy . proxy ordering -> Ordering
2529
26- instance isOrderingLT :: IsOrdering LT where reflectOrdering _ = LT
27- instance isOrderingEQ :: IsOrdering EQ where reflectOrdering _ = EQ
28- instance isOrderingGT :: IsOrdering GT where reflectOrdering _ = GT
30+ instance isOrderingLT :: IsOrdering PO. LT where reflectOrdering _ = LT
31+ instance isOrderingEQ :: IsOrdering PO. EQ where reflectOrdering _ = EQ
32+ instance isOrderingGT :: IsOrdering PO. GT where reflectOrdering _ = GT
2933
3034-- | Use a value level `Ordering` as a type-level `Ordering`
31- reifyOrdering :: forall r . Ordering -> (forall o . IsOrdering o => OProxy o -> r ) -> r
32- reifyOrdering LT f = f (OProxy :: OProxy LT )
33- reifyOrdering EQ f = f (OProxy :: OProxy EQ )
34- reifyOrdering GT f = f (OProxy :: OProxy GT )
35+ reifyOrdering :: forall r . Ordering -> (forall proxy o . IsOrdering o => proxy o -> r ) -> r
36+ reifyOrdering LT f = f (Proxy :: Proxy PO. LT )
37+ reifyOrdering EQ f = f (Proxy :: Proxy PO. EQ )
38+ reifyOrdering GT f = f (Proxy :: Proxy PO. GT )
3539
3640-- | Append two `Ordering` types together
3741-- | Reflective of the semigroup for value level `Ordering`
38- class Append (lhs :: Ordering )
39- (rhs :: Ordering )
40- (output :: Ordering ) |
41- lhs -> rhs output
42- instance appendOrderingLT :: Append LT rhs LT
43- instance appendOrderingEQ :: Append EQ rhs rhs
44- instance appendOrderingGT :: Append GT rhs GT
42+ class Append :: PO.Ordering -> PO.Ordering -> PO.Ordering -> Constraint
43+ class Append lhs rhs output | lhs -> rhs output
44+ instance appendOrderingLT :: Append PO.LT rhs PO.LT
45+ instance appendOrderingEQ :: Append PO.EQ rhs rhs
46+ instance appendOrderingGT :: Append PO.GT rhs PO.GT
4547
4648append :: forall l r o . Append l r o => OProxy l -> OProxy r -> OProxy o
4749append _ _ = OProxy
4850
4951-- | Invert an `Ordering`
50- class Invert (ordering :: Ordering )
51- (result :: Ordering ) |
52- ordering -> result
53- instance invertOrderingLT :: Invert LT GT
54- instance invertOrderingEQ :: Invert EQ EQ
55- instance invertOrderingGT :: Invert GT LT
52+ class Invert :: PO.Ordering -> PO.Ordering -> Constraint
53+ class Invert ordering result | ordering -> result
54+ instance invertOrderingLT :: Invert PO.LT PO.GT
55+ instance invertOrderingEQ :: Invert PO.EQ PO.EQ
56+ instance invertOrderingGT :: Invert PO.GT PO.LT
5657
5758invert :: forall i o . Invert i o => OProxy i -> OProxy o
5859invert _ = OProxy
5960
60- class Equals (lhs :: Ordering )
61- (rhs :: Ordering )
62- (out :: Boolean ) |
63- lhs rhs -> out
61+ class Equals :: PO.Ordering -> PO.Ordering -> Boolean -> Constraint
62+ class Equals lhs rhs out | lhs rhs -> out
6463
65- instance equalsEQEQ :: Equals EQ EQ True
66- instance equalsLTLT :: Equals LT LT True
67- instance equalsGTGT :: Equals GT GT True
68- instance equalsEQLT :: Equals EQ LT False
69- instance equalsEQGT :: Equals EQ GT False
70- instance equalsLTEQ :: Equals LT EQ False
71- instance equalsLTGT :: Equals LT GT False
72- instance equalsGTLT :: Equals GT LT False
73- instance equalsGTEQ :: Equals GT EQ False
64+ instance equalsEQEQ :: Equals PO. EQ PO. EQ True
65+ instance equalsLTLT :: Equals PO. LT PO. LT True
66+ instance equalsGTGT :: Equals PO. GT PO. GT True
67+ instance equalsEQLT :: Equals PO. EQ PO. LT False
68+ instance equalsEQGT :: Equals PO. EQ PO. GT False
69+ instance equalsLTEQ :: Equals PO. LT PO. EQ False
70+ instance equalsLTGT :: Equals PO. LT PO. GT False
71+ instance equalsGTLT :: Equals PO. GT PO. LT False
72+ instance equalsGTEQ :: Equals PO. GT PO. EQ False
7473
7574equals :: forall l r o . Equals l r o => OProxy l -> OProxy r -> BProxy o
7675equals _ _ = BProxy
77-
0 commit comments