[project @ 2004-11-03 01:10:59 by igloo]
authorigloo <unknown>
Wed, 3 Nov 2004 01:10:59 +0000 (01:10 +0000)
committerigloo <unknown>
Wed, 3 Nov 2004 01:10:59 +0000 (01:10 +0000)
Implement TH ForallC constructor.

libraries/template-haskell/Language/Haskell/TH/Lib.hs
libraries/template-haskell/Language/Haskell/TH/Ppr.hs
libraries/template-haskell/Language/Haskell/TH/Syntax.hs

index c2a56b3..685f81c 100644 (file)
@@ -329,6 +329,9 @@ infixC st1 con st2 = do st1' <- st1
                         st2' <- st2
                         return $ InfixC st1' con st2'
 
+forallC :: [Name] -> CxtQ -> ConQ -> ConQ
+forallC ns ctxt con = liftM2 (ForallC ns) ctxt con
+
 
 -------------------------------------------------------------------------------
 --     Type
index 3c1fbac..adca695 100644 (file)
@@ -243,6 +243,8 @@ instance Ppr Con where
     ppr (RecC c vsts)
         = ppr c <+> braces (hsep (punctuate comma $ map pprVarStrictType vsts))
     ppr (InfixC st1 c st2) = pprStrictType st1 <+> ppr c <+> pprStrictType st2
+    ppr (ForallC ns ctxt con) = text "forall" <+> hsep (map ppr ns)
+                            <+> char '.' <+> pprCxt ctxt <+> ppr con
 
 ------------------------------
 pprVarStrictType :: (Name, Strict, Type) -> Doc
index f3f57bb..6bd5aec 100644 (file)
@@ -532,6 +532,7 @@ data Strict = IsStrict | NotStrict
 data Con = NormalC Name [StrictType]
          | RecC Name [VarStrictType]
          | InfixC StrictType Name StrictType
+         | ForallC [Name] Cxt Con
          deriving( Show, Eq )
 
 type StrictType = (Strict, Type)