packages feed

ChristmasTree-0.1: examples/TestShow.hs

{-# OPTIONS -XScopedTypeVariables -XRank2Types #-}
{-# LANGUAGE TemplateHaskell  #-}

module TestShow where

import Text.GRead
import Text.GRead.Derive

import Text.GShow

import Language.Haskell.TH
import Language.Haskell.TH.Syntax


data T1 = T1
 deriving Show
$(deriveShow ''T1)

s1 = gshow T1

data T2 a = T2

$(deriveShow ''T2)

s2 = gshow (T2 :: (T2 T1))

data T3 a = T3 a
  deriving Show

$(deriveShow ''T3)

s3 = gshow $ T3 T1

infixl 5 :<:
infixr 6 :>:

data T4 a =  T4 a :<: a
          |  T4 a :>: T4 a
          |  C4
 deriving Show

data T5 = T5
 deriving Show

$(deriveShow ''T4)
$(deriveShow ''T5)

s41 = gshow (C4 :>: C4 :>: C4 :>: C4 :: T4 T5)
s42 = gshow ((C4 :>: C4) :>: C4 :: T4 T5)
s43 = gshow (C4 :>: (C4 :>: C4) :: T4 T5)
s44 = gshow (C4 :>: C4 :>: C4 :<: T5 :: T4 T5)
s45 = gshow (C4 :>: C4 :>: C4 :<: T5 :<: T5 :: T4 T5)

$(deriveGrammar ''T4)
$(deriveGrammar ''T5)

v41 = gread s41 :: GReadResult (T4 T5)
v42 = gread s42 :: GReadResult (T4 T5)
v43 = gread s43 :: GReadResult (T4 T5)
v44 = gread s44 :: GReadResult (T4 T5)
v45 = gread s45 :: GReadResult (T4 T5)