【发布时间】:2014-03-02 12:32:06
【问题描述】:
这里是 Haskell 的初学者。
我有一个函数和一堆属性来测试它,我使用 quickcheck 编写了这些属性。当我在解释器中单独运行这些属性时,这些属性可以正常工作,并且函数检查正常。
但是,手动快速检查解释器中的每个属性(quickCheck prop_this、quickCheck prop_that)是无聊、单调且耗时的。我想把所有这些都放在一个程序中,并让该程序运行所有的快速检查。这就是我卡住的地方。
程序的基本骨架如下:
imports...
function_which_i_want_to_quickcheck
prop_1
prop_2
etc...
main = do
quickCheck prop_1
quickCheck prop_2
etc...
我相信 main 上面的所有内容都很好,因为没有它,它们都可以编译和工作。主要是我需要帮助的。我尝试了几种变体,即没有做,使用做,使用'x
任何人都可以提供上述帮助吗?
如果我想将 main 中的所有内容移动到另一个(正常、非 main)函数,我该怎么做?
编辑:我很欣赏有关测试框架的建议,但我在这里要求的内容对于任何其他语言来说都是微不足道的,并且不需要测试框架。为什么不用 Haskell?
此外,这在解释器中也能正常工作。我无法让它在 main 中工作。任何想法为什么?
quickCheck prop_1 >> quickCheck prop_2 >> quickCheck prop_3
谢谢。
【问题讨论】:
-
如果你所有的属性都属于同一类型,那么你可以把它们放在一个列表中,然后
mapM_。 -
用看不到的代码和看不到的错误来诊断问题并不容易。 Haskellers 有超能力,但也有限制。
-
您拥有诊断所需的所有信息。阅读问题。我说的是主要工作之上的所有功能和代码。至于main,它是“quickcheck blah”的序列。你是说你需要真正的函数名还是无法诊断?
-
@user3355020 “什么都做不了”——对此唯一明智的答案是“为我工作”(我特此给出)。
-
我们没有必要的信息。您需要给我们一个失败的完整代码示例,以便我们运行它,查看错误消息并诊断问题。例如,您的某个属性的类型可能存在一些微妙之处,在这里并不明显。
标签: haskell io monads quickcheck