Implement poly-kinded Typeable
authorJose Pedro Magalhaes <jpm@cs.ox.ac.uk>
Thu, 7 Feb 2013 14:00:59 +0000 (14:00 +0000)
committerJose Pedro Magalhaes <jpm@cs.ox.ac.uk>
Thu, 7 Feb 2013 14:00:59 +0000 (14:00 +0000)
This patch makes the Data.Typeable.Typeable class work with arguments of any
kind. In particular, this removes the Typeable1..7 class hierarchy, greatly
simplyfing the whole Typeable story. Also added is the AutoDeriveTypeable
language extension, which will automatically derive Typeable for all types and
classes declared in that module. Since there is now no good reason to give
handwritten instances of the Typeable class, those are ignored (for backwards
compatibility), and a warning is emitted.

The old, kind-* Typeable class is now called OldTypeable, and lives in the
Data.OldTypeable module. It is deprecated, and should be removed in some future
version of GHC.

dph-lifted-base/Data/Array/Parallel/PArray/Types.hs
dph-lifted-vseg/Data/Array/Parallel/Lifted/Closure.hs
dph-lifted-vseg/Data/Array/Parallel/PArray.hs
dph-lifted-vseg/Data/Array/Parallel/PArray/PData/Base.hs
dph-lifted-vseg/Data/Array/Parallel/PArray/PData/Nested.hs

index 34450da..52069f2 100644 (file)
@@ -63,7 +63,7 @@ fromVoid = error $ unlines
 data Sum2 a b
         = Alt2_1 a | Alt2_2 b
 
-deriving instance Typeable2 Sum2
+deriving instance Typeable Sum2
 
 
 tagOfSum2 :: Sum2 a b -> Tag
@@ -86,7 +86,7 @@ instance (PprPhysical a, PprPhysical b)
 data Sum3 a b c
         = Alt3_1 a | Alt3_2 b | Alt3_3 c
 
-deriving instance Typeable3 Sum3
+deriving instance Typeable Sum3
 
 
 tagOfSum3 :: Sum3 a b c -> Tag
@@ -123,4 +123,4 @@ tagOfSum3 ss
 --
 newtype Wrap a = Wrap { unWrap :: a }
 
-deriving instance Typeable1 Wrap
+deriving instance Typeable Wrap
index 6606edb..adae99c 100644 (file)
@@ -53,7 +53,7 @@ data (a :-> b)
                 (Int -> PData env -> PData a -> PData b)
                 env
 
-deriving instance T.Typeable2 (:->)
+deriving instance T.Typeable (:->)
 
 -- | Closure application.
 ($:) :: (a :-> b) -> a -> b
index fea3eee..ea0351a 100644 (file)
@@ -82,7 +82,7 @@ import qualified Data.Array.Parallel.Unlifted                 as U
 import qualified Data.Vector                                   as V
 import qualified Data.Array.Parallel.PArray.Reference          as R
 import qualified Data.Array.Parallel.PArray.Reference.Convert  as R
-import Data.Typeable
+import Data.Typeable hiding ( typeRep )
 
 import qualified Prelude                                       as P
 import Prelude hiding 
index 7b006d2..32d8350 100644 (file)
@@ -39,7 +39,7 @@ import Prelude hiding (length)
 data PArray a
         = PArray Int# (PData  a)
 
-deriving instance T.Typeable1 PArray
+deriving instance T.Typeable PArray
 
 
 -- | Take the length field of a `PArray`.
index 5f801ff..8936d4c 100644 (file)
@@ -49,7 +49,7 @@ data instance PData (PArray a)
           --   then it should stash it here, otherwise build a thunk that makes it.
         }
 
-deriving instance T.Typeable1 PData
+deriving instance T.Typeable PData
 
 
 -- TODO: should we unpack the vsegd fields here?