@@ -1,6 +1,7 @@
1{-# LANGUAGE DeriveDataTypeable #-}
1{-# LANGUAGE DeriveDataTypeable #-}
2{-# LANGUAGE UndecidableInstances #-}
2{-# LANGUAGE UndecidableInstances #-}
3{-# LANGUAGE FlexibleInstances #-}
3{-# LANGUAGE FlexibleInstances #-}
4+{-# LANGUAGE ScopedTypeVariables #-}
4{-# LANGUAGE GADTs #-}
5{-# LANGUAGE GADTs #-}
5{-# LANGUAGE CPP #-}
6{-# LANGUAGE CPP #-}
6module Control.Distributed.Process.Serializable
7module Control.Distributed.Process.Serializable
@@ -17,7 +18,11 @@ module Control.Distributed.Process.Serializable
18import Data.Binary (Binary)
19import Data.Binary (Binary)
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)
21import Data.Typeable (Typeable)
26import Data.Typeable (Typeable)
22import Data.Typeable.Internal (TypeRep(TypeRep), typeOf)
27import Data.Typeable.Internal (TypeRep(TypeRep), typeOf)
@@ -70,8 +75,10 @@ sizeOfFingerprint :: Int
70sizeOfFingerprint = sizeOf (undefined :: Fingerprint)
75sizeOfFingerprint = sizeOf (undefined :: Fingerprint)
72-- | The fingerprint of the typeRep of the argument
77-- | The fingerprint of the typeRep of the argument
73−fingerprint :: Typeable a => a -> Fingerprint
78+fingerprint :: forall a. Typeable a => a -> Fingerprint
74−#if MIN_VERSION_base(4,8,0)
79+#if MIN_VERSION_base(4,10,0)
80+fingerprint _ = typeRepFingerprint (typeRep :: TypeRep a)
81+#elif MIN_VERSION_base(4,8,0)
75fingerprint a = let TypeRep fp _ _ _ = typeOf a in fp
82fingerprint a = let TypeRep fp _ _ _ = typeOf a in fp
77fingerprint a = let TypeRep fp _ _ = typeOf a in fp
84fingerprint a = let TypeRep fp _ _ = typeOf a in fp