为什么模板Haskell使用AST
我一直在用TemplateHaskell玩一下,我遇到了这个问题,基本上是这样
你做不到
keyword name = [d| data $(name) = $(name) |]
你必须做类似的事情
keyword name = return [DataD [] name [] [NormalC name []] []] where
name' = mkName name
代替。
显然这个原因可能与一些类型检查问题有关。 所以问题是,为什么模板Haskell使用复杂的AST而不是字符串。 如果一个拼接返回一个简单的字符串并且在扩展文件中会发生类型检查,那么这样做会不会更容易?
链接地址: http://www.djcxy.com/p/33181.html