Merge remote-tracking branch 'origin/master' into type-nats
[ghc.git] / libraries / template-haskell / Language / Haskell / TH / Lib.hs
index d98da91..3bf5c60 100644 (file)
@@ -22,6 +22,7 @@ type DecQ           = Q Dec
 type DecsQ          = Q [Dec]
 type ConQ           = Q Con
 type TypeQ          = Q Type
+type TyLitQ         = Q TyLit
 type CxtQ           = Q Cxt
 type PredQ          = Q Pred
 type MatchQ         = Q Match
@@ -469,6 +470,9 @@ arrowT = return ArrowT
 listT :: TypeQ
 listT = return ListT
 
+litT :: TyLit -> TypeQ
+litT l = return (LitT l)
+
 tupleT :: Int -> TypeQ
 tupleT i = return (TupleT i)
 
@@ -493,6 +497,17 @@ varStrictType :: Name -> StrictTypeQ -> VarStrictTypeQ
 varStrictType v st = do (s, t) <- st
                         return (v, s, t)
 
+-- * Type Literals
+
+numTyLit :: Integer -> TyLitQ
+numTyLit n = if n >= 0 then return (NumTyLit n)
+                       else fail ("Negative type-level number: " ++ show n)
+
+strTyLit :: String -> TyLitQ
+strTyLit s = return (StrTyLit s)
+
+
+
 -------------------------------------------------------------------------------
 -- *   Kind