我的印象是,使用:: Name -> Q [Dec]
类型的函数必须将其打开,并将TemplateHaskell
扩展名打开,例如,记录在aeson
中:
$(deriveJSON defaultOptions ''(,,,))
但我刚刚注意到lens
docs节目使用这些TH函数而没有拼接(或TemplateHaskell
),我只是在我正在处理的库中尝试过它似乎工作正常,即使是顶级的这样的事情:
fmap concat $ forM [''X , ''Y , ''Z ] deriveFoo
然而,在进行了这些修改(从拼接中移除并删除了pragma)之后,我得到了this error,除非我在测试套件块中添加extensions: TemplateHaskell
行,我实际上并不是理解。
拼接的东西是神话吗?如果是这样,那么为什么我需要在测试套件的扩展列表中使用TemplateHaskell
?