multirec-0.7.9: examples/VarTypes.hs
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module VarTypes where
import Generics.MultiRec.TH
data Type1 a b = CA a | CB b
data Type2 c = CC c | CD
data Type3 = CE
data TypesF :: * -> * -> * -> * -> * where
Type1 :: TypesF a b c (Type1 a b)
Type2 :: TypesF a b c (Type2 c)
Type3 :: TypesF a b c Type3
$(deriveAll ''TypesF)