type-ord 0.1 → 0.2
raw patch · 3 files changed
+16/−20 lines, 3 filesdep −type-booleansdep ~type-digitsdep ~type-spinePVP ok
version bump matches the API change (PVP)
Dependencies removed: type-booleans
Dependency ranges changed: type-digits, type-spine
API changes (from Hackage documentation)
- Type.Ord.Base: data EQ
- Type.Ord.Base: data GT
- Type.Ord.Base: data LT
Files
- Type/Ord.hs +8/−7
- Type/Ord/Base.hs +4/−8
- type-ord.cabal +4/−5
Type/Ord.hs view
@@ -17,7 +17,8 @@ -} module Type.Ord (module Type.Ord.Base) where -import Type.Digits (digit, radix)+import Type.Digits (digit, radix, digitTypes)+import Type.Digits.Stage0 (Digit(DigitStop)) import Type.Ord.Base @@ -25,15 +26,15 @@ -type instance Compare () () = EQ+type instance Compare 'DigitStop 'DigitStop = 'EQ fmap concat $ sequence [ do- let dL = conT $ digit n+ let dL = return pureTy [l, r] = map (varT . mkName) ["l", "r"] f x y z = tySynInstD ''Compare [x, y] z d <- f [t| $dL $l |] [t| $dL $r |] [t| Compare $l $r |] ((d:) . concat) `fmap` sequence [- let dR = conT $ digit m in- sequence [f [t| $dL $l |] [t| $dR $r |] [t| LT |],- f [t| $dR $l |] [t| $dL $r |] [t| GT |]]+ let dR = promotedT $ digit m in+ sequence [f [t| $dL $l |] [t| $dR $r |] [t| 'LT |],+ f [t| $dR $l |] [t| $dL $r |] [t| 'GT |]] | m <- [n + 1..radix - 1] ]- | n <- [0..radix - 1] ]+ | (n, pureTy) <- zip [0..] digitTypes ]
Type/Ord/Base.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeFamilies, EmptyDataDecls #-}+{-# LANGUAGE TypeFamilies, DataKinds, PolyKinds #-} {- | @@ -15,21 +15,17 @@ -} module Type.Ord.Base- (module Type.Booleans, Compare, LT, EQ, GT, OrdCase, IsEQ, IsLT, IsGT) where--import Type.Booleans (True, False)+ (Compare, OrdCase, IsEQ, IsLT, IsGT) where -- | Type-level comparison.-type family Compare l r--data LT; data EQ; data GT+type family Compare (l :: k) (r :: k) :: Ordering -- | @OrdCase x a b c@ reduces to @a@, @b@, or @c@, if @x@ is @LT@, @EQ@, or -- @GT@, respectively. type OrdCase x a b c = OrdCase_ x a b c-type family OrdCase_ x a b c+type family OrdCase_ (x :: Ordering) (a :: k) (b :: k) (c :: k) :: k type instance OrdCase_ LT a b c = a type instance OrdCase_ EQ a b c = b type instance OrdCase_ GT a b c = c
type-ord.cabal view
@@ -1,5 +1,5 @@ Name: type-ord-Version: 0.1+Version: 0.2 License: BSD3 License-File: LICENSE Author: Nicolas Frisby <nicolas.frisby@gmail.com>@@ -9,9 +9,8 @@ Synopsis: Type-level comparison operator -Description: Type-level comparison operator with instances for ()-terminated- @type-digit@ numerals until <http://hackage.haskell.org/trac/ghc/ticket/1894>- is resolved.+Description: Type-level comparison operator with instances for @type-digit@+ numerals until <http://hackage.haskell.org/trac/ghc/ticket/1894> is resolved. Cabal-Version: >= 1.6.0.1 @@ -20,6 +19,6 @@ Library Build-Depends: base >= 4 && < 5, template-haskell- Build-Depends: type-booleans < 0.2, type-spine < 0.2, type-digits < 0.2+ Build-Depends: type-spine >= 0.2, type-digits >= 0.2 Exposed-Modules: Type.Ord, Type.Ord.Base