[commit: ghc] type-nats: Add type-level '-' as a known name for GHC. (3a77504)

Iavor Diatchki <[email protected]>
Newsgroups gmane.comp.lang.haskell.cvs.ghc
Message-ID <[email protected]>
Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : type-nats

http://hackage.haskell.org/trac/ghc/changeset/3a775041ddaa02bfd75917c60427fc87b04eada4

>---------------------------------------------------------------

commit 3a775041ddaa02bfd75917c60427fc87b04eada4
Author: Iavor S. Diatchki <[email protected]>
Date:   Sun Nov 11 12:27:34 2012 -0800

    Add type-level '-' as a known name for GHC.

>---------------------------------------------------------------

 compiler/prelude/PrelNames.lhs  |   14 ++++++++++----
 compiler/prelude/TysWiredIn.lhs |    4 ++++
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/compiler/prelude/PrelNames.lhs b/compiler/prelude/PrelNames.lhs
index 14a5108..ff3cc39 100644
--- a/compiler/prelude/PrelNames.lhs
+++ b/compiler/prelude/PrelNames.lhs
@@ -288,6 +288,7 @@ basicKnownKeyNames
         typeNatAddTyFamName,
         typeNatMulTyFamName,
         typeNatExpTyFamName,
+        typeNatSubTyFamName,
         fromNat1TyFamName,
 
         -- Implicit parameters
@@ -1092,7 +1093,9 @@ isStringClassName   = clsQual dATA_STRING (fsLit "IsString") isStringClassKey
 -- Type-level naturals
 typeNatKindConName, typeStringKindConName,
   singIClassName, typeNatLeqTyFamName,
-  typeNatAddTyFamName, typeNatMulTyFamName, typeNatExpTyFamName :: Name
+  typeNatAddTyFamName, typeNatMulTyFamName, typeNatExpTyFamName,
+  typeNatSubTyFamName
+  :: Name
 typeNatKindConName    = tcQual gHC_TYPELITS (fsLit "Nat")  typeNatKindConNameKey
 typeStringKindConName = tcQual gHC_TYPELITS (fsLit "Symbol")
                                                         typeStringKindConNameKey
@@ -1101,6 +1104,7 @@ typeNatLeqTyFamName = clsQual gHC_TYPELITS (fsLit "<=?") typeNatLeqTyFamNameKey
 typeNatAddTyFamName = tcQual  gHC_TYPELITS (fsLit "+")   typeNatAddTyFamNameKey
 typeNatMulTyFamName = tcQual  gHC_TYPELITS (fsLit "*")   typeNatMulTyFamNameKey
 typeNatExpTyFamName = tcQual  gHC_TYPELITS (fsLit "^")   typeNatExpTyFamNameKey
+typeNatSubTyFamName = tcQual  gHC_TYPELITS (fsLit "-")   typeNatSubTyFamNameKey
 
 fromNat1TyFamName :: Name
 fromNat1TyFamName = tcQual  gHC_TYPELITS (fsLit "FromNat1") fromNat1TyFamNameKey
@@ -1417,7 +1421,8 @@ typeNatKindConNameKey, typeStringKindConNameKey,
   typeNatLeqTyFamNameKey,
   typeNatAddTyFamNameKey,
   typeNatMulTyFamNameKey,
-  typeNatExpTyFamNameKey
+  typeNatExpTyFamNameKey,
+  typeNatSubTyFamNameKey
   :: Unique
 typeNatKindConNameKey     = mkPreludeTyConUnique 160
 typeStringKindConNameKey  = mkPreludeTyConUnique 161
@@ -1425,10 +1430,11 @@ typeNatLeqTyFamNameKey    = mkPreludeTyConUnique 162
 typeNatAddTyFamNameKey    = mkPreludeTyConUnique 163
 typeNatMulTyFamNameKey    = mkPreludeTyConUnique 164
 typeNatExpTyFamNameKey    = mkPreludeTyConUnique 165
+typeNatSubTyFamNameKey    = mkPreludeTyConUnique 166
 
 nat1TyConKey, fromNat1TyFamNameKey :: Unique
-nat1TyConKey              = mkPreludeTyConUnique 166
-fromNat1TyFamNameKey      = mkPreludeTyConUnique 167
+nat1TyConKey              = mkPreludeTyConUnique 167
+fromNat1TyFamNameKey      = mkPreludeTyConUnique 168
 
 ---------------- Template Haskell -------------------
 --      USES TyConUniques 200-299
diff --git a/compiler/prelude/TysWiredIn.lhs b/compiler/prelude/TysWiredIn.lhs
index 2bcfb93..d371a86 100644
--- a/compiler/prelude/TysWiredIn.lhs
+++ b/compiler/prelude/TysWiredIn.lhs
@@ -74,6 +74,7 @@ module TysWiredIn (
 
         -- * Type families used to compute at the type level.
         typeNatLeqTyCon, typeNatAddTyCon, typeNatMulTyCon, typeNatExpTyCon,
+        typeNatSubTyCon,
         fromNat1TyCon,
 
         -- * Lifted booleans
@@ -804,6 +805,9 @@ typeNatMulTyCon = mkTypeNatFunTyCon typeNatMulTyFamName
 typeNatExpTyCon :: TyCon
 typeNatExpTyCon = mkTypeNatFunTyCon typeNatExpTyFamName
 
+typeNatSubTyCon :: TyCon
+typeNatSubTyCon = mkTypeNatFunTyCon typeNatSubTyFamName
+
 fromNat1TyCon :: TyCon
 fromNat1TyCon = mkSynTyCon fromNat1TyFamName
                     (mkArrowKinds [ nat1Kind ] typeNatKind )
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.