从名称创建数据类型?

Ven*_*nge 5 haskell template-haskell

可能重复:
Template Haskell声明中的局部变量

我正在尝试构造一个简单的模板Haskell函数,给定一个像"Foo"这样的字符串,将构造语法树data Foo = Foo.

现在,我正在尝试做类似的事情mkDecl name = [d|data $(conT name) = Foo|],但是这给了我错误:"格式错误的类型或类声明:$(conT name)".知道发生了什么事吗?

我可以用dataD等写出来,但我更喜欢这种方式,因为它会更清楚地发生了什么.