使用模板haskell获取范围内的所有函数/值

使用模板
haskell,有没有办法列出范围内的所有函数?就像是

allVarsInScope :: Q [Name]

我正在尝试做的是获取以test_开头的所有导入函数的列表,并自动运行测试.

最佳答案 遗憾的是,模板Haskell中没有这种反射功能,但有一些解决方法.但是,在自己写这样的东西之前,我建议尝试使用
test-framework-th软件包,它已经开始用于以case_开头的HUnit测试,也用于以prop_开头的QuickCheck属性.

在引擎盖下,这个软件包使用language-haskell-extract软件包,它基本上在模块上运行自己的解析传递来挑选定义.这是一个有点hacky的解决方案,但它在实践中运作良好.但是,它确实带来了相当多的依赖项,而额外的解析过程可能会降低您的构建速度.

点赞