multirec-0.7.8: examples/J.hs
{-# LANGUAGE GADTs #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE FlexibleInstances #-}
module J where
import Generics.MultiRec.Base
import Generics.MultiRec.TH
-- Issue #4 test case
data J a = JJ (a, J a)
data AST :: * -> * -> * where
J :: AST a (J a)
$(deriveAll ''AST)