From: jpm@cs.uu.nl Date: Wed, 15 Dec 2010 10:08:25 +0000 (+0000) Subject: Use type families X-Git-Tag: ghc-darcs-git-switchover~4 X-Git-Url: http://git.megacz.com/?p=ghc-prim.git;a=commitdiff_plain;h=25872f694aea1a4e3b623eb0c6897d611aa0a758 Use type families --- diff --git a/GHC/Generics.hs b/GHC/Generics.hs index 7f5b86f..cf61c6c 100644 --- a/GHC/Generics.hs +++ b/GHC/Generics.hs @@ -20,6 +20,7 @@ data (:*:) a b = a :*: b {-# OPTIONS_GHC -XTypeSynonymInstances #-} {-# OPTIONS_GHC -XTypeOperators #-} {-# OPTIONS_GHC -XKindSignatures #-} +{-# OPTIONS_GHC -XTypeFamilies #-} module GHC.Generics ( -- * Generic representation types @@ -34,6 +35,9 @@ module GHC.Generics ( , Datatype(..), Constructor(..), Selector(..), NoSelector , Fixity(..), Associativity(..), Arity(..), prec + -- * Representation type families + , Rep0, Rep1 + -- * Representable type classes , Representable0(..), Representable1(..) @@ -171,18 +175,22 @@ data Associativity = LeftAssociative -- | Representable types of kind * -class Representable0 a rep where +class Representable0 a where + -- | Representation type + type Rep0 a :: * -> * -- | Convert from the datatype to its representation - from0 :: a -> rep x + from0 :: a -> Rep0 a x -- | Convert from the representation to the datatype - to0 :: rep x -> a + to0 :: Rep0 a x -> a -- | Representable types of kind * -> * class Representable1 f rep where + -- | Representation type + type Rep1 f :: * -> * -- | Convert from the datatype to its representation - from1 :: f a -> rep a + from1 :: f a -> Rep1 f a -- | Convert from the representation to the datatype - to1 :: rep a -> f a + to1 :: Rep1 f a -> f a -------------------------------------------------------------------------------- -- Representation for base types