【问题标题】:Get all functions/values in scope with template haskell使用模板 haskell 获取范围内的所有函数/值
【发布时间】:2012-07-31 00:14:58
【问题描述】:

使用模板haskell,有没有办法列出范围内的所有函数?类似的东西

allVarsInScope :: Q [Name]

我想要做的是获取以 test_ 开头的所有导入函数的列表,然后自动运行测试。

【问题讨论】:

  • Test.QuickCheck.All 以防您的测试是 QuickCheck 属性。
  • 它不跨越模块边界。
  • 用于自动测试运行see HTF project。它做了非常了不起的事情。

标签: haskell template-haskell


【解决方案1】:

遗憾的是,在 Template Haskell 中没有这样的反射功能,但有一些变通方法。但是,在自己编写类似的东西之前,我建议尝试 test-framework-th 包,它已经为以 case_ 开头的 HUnit 测试以及以 prop_ 开头的 QuickCheck 属性执行此操作。

在底层,这个包使用language-haskell-extract 包,它本质上是在模块上运行自己的解析传递来挑选定义。这是一个有点老套的解决方案,但在实践中效果很好。但是,它确实带来了相当多的依赖项,并且额外的解析过程可能会减慢您的构建速度。

【讨论】:

  • 如果我能帮上忙,我宁愿不在构建时通过测试重新解析每个模块。
猜你喜欢
  • 2018-03-19
  • 2011-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-23
  • 2016-11-06
  • 2020-03-09
  • 1970-01-01
相关资源
最近更新 更多