)
where
-import Data.HList.Number
import Data.HList.Prelude
import Language.Haskell.TH
import Language.Haskell.TH.Quote
+import Types.Data.Num.Decimal.Literals.TH
+import Types.Data.Num.Ops
class HString s
instance HString HNil
-instance HNat c => HString (HCons c s)
+instance IntegerT c => HString (HCons c s)
hString :: QuasiQuoter
hString = QuasiQuoter quoteStrExp quoteStrPat
quoteStrExp :: String -> ExpQ
quoteStrExp [] = varE (mkName "hNil")
quoteStrExp (c:cs) = appsE [ varE (mkName "hCons")
- , hNatLiteralE (fromEnum c)
+ , decLiteralV (toInteger $ fromEnum c)
, quoteStrExp cs
]
quoteStrPat :: String -> PatQ
quoteStrPat [] = varP (mkName "HNil")
-quoteStrPat (c:cs) = conP (mkName "HCons") [ hNatLiteralP (fromEnum c)
- , quoteStrPat cs
- ]
+quoteStrPat (c:cs) = conP (mkName "HCons")
+ [ sigP wildP (decLiteralT $ toInteger $ fromEnum c)
+ , quoteStrPat cs
+ ]