, Datatype(..), Constructor(..), Selector(..), NoSelector
, Fixity(..), Associativity(..), Arity(..), prec
+ -- * Representation type families
+ , Rep0, Rep1
+
-- * Representable type classes
, Representable0(..), Representable1(..)
-}
) where
-import {-# SOURCE #-} GHC.Types
+import {-# SOURCE #-} GHC.Types -- ([](..), Int, Char, Bool(..))
--------------------------------------------------------------------------------
-- Representation types
-- | Representable types of kind *
class Representable0 a rep where
-- | 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
-- | 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