使用模板haskell获取模块中的对象名称列表?

时间:2010-12-05 21:00:49

标签: haskell

我希望能够获取包含以下声明的文件:

test_1 = assert $ 1 == 1
test_2 = assert $ 2 == 1

并生成一个基本的运行函数,如

main = runTests [test_1, test2]

目标是获得像Python一样的东西。

我可以使用模板Haskell吗?我找不到很多关于它的文档(Wiki中有许多断开的链接)。

2 个答案:

答案 0 :(得分:4)

还有另外一种方法,你不必使用模板haskell。 haskell-src-exts可以解析Haskell,你可以从中提取。

或者如果您的目的是实用的,您可以像quickcheck那样做一个简单的解析,即在第0列中查找以prop_开头的标识符。这是一个非常合适的解决方案实际工作,虽然理论上可能不满意。

答案 1 :(得分:4)

您可能需要查看test-framework系列软件包。特别是,test-framework-th包提供了模板Haskell函数defaultMainGenerator,它完全符合您对QuickCheck和HUnit测试的要求,只要您遵循使用{{1}前缀HUnit测试用例的惯例。使用case_和。{/ p>的QuickCheck属性

prop_