{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE TypeOperators #-} module CanDoRep0 where import GHC.Generics (Generic) -- We should be able to generate a generic representation for these types data A deriving Generic data B a deriving Generic data C = C0 | C1 deriving Generic data D a = D0 | D1 { d11 :: a, d12 :: (D a) } deriving Generic data (:*:) a b = a :*: b deriving Generic