deriving data Foo = Foo { unFoo :: String } ?

Marc Weber <[email protected]> Sun, 25 May 2008 14:51:14 +0200
Newsgroups gmane.comp.lang.haskell.template
Message-ID <[email protected]>
=============  TestX.hs ==============================================

module TestX where
import Language.Haskell.TH
import Language.Haskell.TH.Syntax

mkADT :: String -> String -> Q [Dec]
mkADT n t = let n' = mkName n
                un = mkName $ "un" ++ n
             in return [DataD [] n' [] [RecC n' [(un,NotStrict,ConT un)]] []]

============= Main.hs ================================================

-- peckages: template-haskell 
{-# OPTIONS_GHC -XTemplateHaskell #-}
module Main where
import TestX

$( mkADT "Test" "String") 
main = putStrLn . unTest $ Test "test"

============= error ==================================================

test.hs|1 error| 
||     Illegal type constructor or class name: `unTest'
||     When splicing generated code into the program

=============  =======================================================

What am I doing wrong?

Thanks Marc Weber