Add functions for comparing type-level Nats and Symbols.
authorIavor S. Diatchki <diatchki@galois.com>
Wed, 19 Mar 2014 02:35:05 +0000 (19:35 -0700)
committerIavor S. Diatchki <diatchki@galois.com>
Wed, 19 Mar 2014 02:35:05 +0000 (19:35 -0700)
GHC/TypeLits.hs

index e85b36c..ac0f1ae 100644 (file)
@@ -29,12 +29,13 @@ module GHC.TypeLits
   , sameNat, sameSymbol
 
 
-    -- * Functions on type nats
+    -- * Functions on type literals
   , type (<=), type (<=?), type (+), type (*), type (^), type (-)
+  , CmpNat, CmpSymbol
 
   ) where
 
-import GHC.Base(Eq(..), Ord(..), Bool(True,False), otherwise)
+import GHC.Base(Eq(..), Ord(..), Bool(True,False), Ordering(..), otherwise)
 import GHC.Num(Integer)
 import GHC.Base(String)
 import GHC.Show(Show(..))
@@ -153,6 +154,12 @@ infixr 8 ^
 type x <= y = (x <=? y) ~ True
 
 -- | Comparison of type-level naturals, as a function.
+type family CmpSymbol (m :: Symbol) (n :: Symbol) :: Ordering
+
+-- | Comparison of type-level symbols, as a function.
+type family CmpNat    (m :: Nat)    (n :: Nat)    :: Ordering
+
+-- | Comparison of type-level naturals, as a function.
 type family (m :: Nat) <=? (n :: Nat) :: Bool
 
 -- | Addition of type-level naturals.