Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何自动测试模板Haskell函数?_Haskell_Automated Tests_Template Haskell - Fatal编程技术网

如何自动测试模板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

我使用模板Haskell生成给定类型的函数定义。类型基本上是

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
函数,忽略名称,然后使用生成的代码执行一些单元测试。加在一起,似乎可以提供不错的报道。