如何自动测试模板Haskell函数?
我使用模板Haskell生成给定类型的函数定义。类型基本上是如何自动测试模板Haskell函数?,haskell,automated-tests,template-haskell,Haskell,Automated Tests,Template Haskell,我使用模板Haskell生成给定类型的函数定义。类型基本上是 makeFunc :: Name -> Q [Dec] 现在,我使用带有GHC的-ddump拼接开关查看生成的拼接。我如何自动执行此操作,以验证不同类型是否产生预期的拼接 一种基本方法可能是将生成的拼接重定向到一个文件,然后进行比较,但生成的代码可能会有所不同,因为它涉及通过构建的各种标识符。仅使用runQ::Q A->IO A就够了吗?然后,您可以在a上编写任何您喜欢的(可判定)谓词,包括与上一次运行的已知良好结果的alph
makeFunc :: Name -> Q [Dec]
现在,我使用带有GHC的-ddump拼接
开关查看生成的拼接。我如何自动执行此操作,以验证不同类型是否产生预期的拼接
一种基本方法可能是将生成的拼接重定向到一个文件,然后进行比较,但生成的代码可能会有所不同,因为它涉及通过构建的各种标识符。仅使用
runQ::Q A->IO A
就够了吗?然后,您可以在a
上编写任何您喜欢的(可判定)谓词,包括与上一次运行的已知良好结果的alpha等价。也许您可以编写一个非常讨厌的equalModuloNames::Dec->Dec->Bool
函数,忽略名称,然后使用生成的代码执行一些单元测试。加在一起似乎可以提供不错的覆盖率。仅仅使用runQ::qa->ioa
就足够了吗?然后,您可以在a
上编写任何您喜欢的(可判定)谓词,包括与上一次运行的已知良好结果的alpha等价。也许您可以编写一个非常讨厌的equalModuloNames::Dec->Dec->Bool
函数,忽略名称,然后使用生成的代码执行一些单元测试。加在一起似乎可以提供不错的覆盖率。仅仅使用runQ::qa->ioa
就足够了吗?然后,您可以在a
上编写任何您喜欢的(可判定)谓词,包括与上一次运行的已知良好结果的alpha等价。也许您可以编写一个非常讨厌的equalModuloNames::Dec->Dec->Bool
函数,忽略名称,然后使用生成的代码执行一些单元测试。加在一起,似乎可以提供不错的报道。