@@ -1,6 +1,7 @@
11{-# LANGUAGE DeriveDataTypeable #-}
22{-# LANGUAGE UndecidableInstances #-}
33{-# LANGUAGE FlexibleInstances #-}
4+{-# LANGUAGE ScopedTypeVariables #-}
45{-# LANGUAGE GADTs #-}
56{-# LANGUAGE CPP #-}
67module Control.Distributed.Process.Serializable
@@ -17,7 +18,11 @@ module Control.Distributed.Process.Serializable
1718
1819import Data.Binary (Binary)
1920
20−#if MIN_VERSION_base(4,7,0)
21+#if MIN_VERSION_base(4,10,0)
22+import Data.Typeable (Typeable)
23+import Type.Reflection (typeRep)
24+import Type.Reflection.Unsafe (TypeRep, typeRepFingerprint)
25+#elif MIN_VERSION_base(4,7,0)
2126import Data.Typeable (Typeable)
2227import Data.Typeable.Internal (TypeRep(TypeRep), typeOf)
2328#else
@@ -70,8 +75,10 @@ sizeOfFingerprint :: Int
7075sizeOfFingerprint = sizeOf (undefined :: Fingerprint)
7176
7277-- | The fingerprint of the typeRep of the argument
73−fingerprint :: Typeable a => a -> Fingerprint
74−#if MIN_VERSION_base(4,8,0)
78+fingerprint :: forall a. Typeable a => a -> Fingerprint
79+#if MIN_VERSION_base(4,10,0)
80+fingerprint _ = typeRepFingerprint (typeRep :: TypeRep a)
81+#elif MIN_VERSION_base(4,8,0)
7582fingerprint a = let TypeRep fp _ _ _ = typeOf a in fp
7683#else
7784fingerprint a = let TypeRep fp _ _ = typeOf a in fp