Add instance Lift Natural
authorRichard Eisenberg <eir@cis.upenn.edu>
Fri, 19 Dec 2014 15:29:54 +0000 (10:29 -0500)
committerRichard Eisenberg <eir@cis.upenn.edu>
Fri, 19 Dec 2014 16:06:34 +0000 (11:06 -0500)
libraries/template-haskell/Language/Haskell/TH/Syntax.hs
testsuite/tests/th/TH_Lift.hs

index 8e4b344..29be27a 100644 (file)
@@ -29,6 +29,7 @@ import Data.Char        ( isAlpha, isAlphaNum, isUpper )
 import Data.Int
 import Data.Word
 import Data.Ratio
+import Numeric.Natural
 import GHC.Generics     ( Generic )
 
 -----------------------------------------------------
@@ -452,6 +453,7 @@ sequenceQ = sequence
 class Lift t where
   lift :: t -> Q Exp
 
+-- If you add any instances here, consider updating test th/TH_Lift
 instance Lift Integer where
   lift x = return (LitE (IntegerL x))
 
@@ -485,6 +487,9 @@ instance Lift Word32 where
 instance Lift Word64 where
   lift x = return (LitE (IntegerL (fromIntegral x)))
 
+instance Lift Natural where
+  lift x = return (LitE (IntegerL (fromIntegral x)))
+
 instance Integral a => Lift (Ratio a) where
   lift x = return (LitE (RationalL (toRational x)))
 
index fd30af7..eff0f1b 100644 (file)
@@ -8,6 +8,7 @@ import Language.Haskell.TH.Syntax
 import Data.Ratio
 import Data.Word
 import Data.Int
+import Numeric.Natural
 
 a :: Integer
 a = $( (\x -> [| x |]) (5 :: Integer) )
@@ -42,6 +43,9 @@ f = $( (\x -> [| x |]) (5 :: Word32) )
 g :: Word64
 g = $( (\x -> [| x |]) (5 :: Word64) )
 
+g1 :: Natural
+g1 = $( (\x -> [| x |]) (5 :: Natural) )
+
 h :: Rational
 h = $( (\x -> [| x |]) (5 % 3 :: Rational) )