使用模板haskell,有没有办法列出范围内的所有函数?就像是
allVarsInScope :: Q [Name]
我想要做的是获取以 test_ 开头的所有导入函数的列表,并自动运行测试。
使用模板haskell,有没有办法列出范围内的所有函数?就像是
allVarsInScope :: Q [Name]
我想要做的是获取以 test_ 开头的所有导入函数的列表,并自动运行测试。
遗憾的是,在 Template Haskell 中没有这样的反射功能,但有一些变通方法。但是,在自己编写这样的东西之前,我建议尝试test-framework-th包,它已经为以 . 开头的 HUnit 测试case_
和以prop_
.
在底层,这个包使用language-haskell-extract包,它本质上是在模块上运行它自己的解析传递来挑选定义。这是一个有点老套的解决方案,但在实践中效果很好。但是,它确实带来了相当多的依赖项,并且额外的解析过程可能会减慢您的构建速度。