packages feed

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)