diff --git a/Types/Data/Num.hs b/Types/Data/Num.hs
--- a/Types/Data/Num.hs
+++ b/Types/Data/Num.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Types.Data.Num
@@ -15,17 +16,35 @@
 module Types.Data.Num
     ( module Types.Data.Num.Ops
     , module Types.Data.Num.Decimal
+#if __GLASGOW_HASKELL__ >= 704 || __GLASGOW_HASKELL__ < 700
     , reifyIntegralD
     , reifyPositiveD
     , reifyNegativeD
+#endif
     ) where
 
 import Types.Data.Num.Ops
 import Types.Data.Num.Decimal
 
+-- An explanation of the following is in order:
+
+-- Versions of GHC prior to 7.0 (e.g., 6.12.3) will compile this code
+-- as long as the type signature isn't there.
+-- Versions 7.0 and later, but before 7.4 will not compile it at all,
+-- with or without the type signature.
+-- Version 7.4 and later handles everything just fine.
+
+#if __GLASGOW_HASKELL__ >= 704 || __GLASGOW_HASKELL__ < 700
+#if __GLASGOW_HASKELL__ >= 704
 reifyIntegralD :: Integer -> (forall s. (IntegerT s, Repr s ~ Decimal) => s -> a) -> a
+#endif
 reifyIntegralD = reifyIntegral decimal
+#if __GLASGOW_HASKELL__ >= 704
 reifyPositiveD :: Integer -> (forall s. (PositiveT s, Repr s ~ Decimal) => s -> a) -> Maybe a
+#endif
 reifyPositiveD = reifyPositive decimal
+#if __GLASGOW_HASKELL__ >= 704
 reifyNegativeD :: Integer -> (forall s. (NegativeT s, Repr s ~ Decimal) => s -> a) -> Maybe a
+#endif
 reifyNegativeD = reifyNegative decimal
+#endif
diff --git a/tfp.cabal b/tfp.cabal
--- a/tfp.cabal
+++ b/tfp.cabal
@@ -1,5 +1,5 @@
 name:           tfp
-version:        0.5
+version:        0.6
 cabal-version:  >= 1.6
 build-type:     Simple
 license:        BSD3
