{-# LANGUAGE EmptyDataDecls, TypeFamilies, TemplateHaskell #-}
module Main where

import Language.Haskell.TH

type family S :: (* -> (* -> * -> *)) -> (* -> *) -> *

test :: String
test = $(do
	test <- [d| 
		type family T :: (* -> (* -> * -> *)) -> (* -> *) -> * |]
        blah <- reify ''S
	return (LitE (StringL (pprint test ++ "\n" ++ pprint blah))))

main = putStrLn test
