![]() |
1
8
我这样做的方式是创建我自己的IO monad,其中包含我想要建模的动作。我会运行一元计算,我想在我的一元中进行比较,并比较它们的效果。 让我们举个例子。假设我想模拟印刷品。然后我可以像这样对我的IO单子建模:
有些事情是这种模型无法处理的。例如,输入是很棘手的。但我希望它能适合你的用例。我还应该提到,有更聪明和更有效的方法,以这种方式建模的效果。我选择这种方式是因为我认为这是最容易理解的方式。 this page 以及其他一些相关文件。 |
![]() |
2
4
在IO monad中,您可以测试IO函数的返回值。在IO monad之外测试返回值是不安全的:这意味着可以这样做,但只会有破坏程序的风险。仅供专家使用。
在内部
|
![]() |
3
1
你可以测试
一元码
QuickCheck 2
. 我已经很久没有读过这篇论文了,所以我不记得它是否适用于IO操作,或者适用于什么样的一元计算。此外,您可能会发现很难将单元测试表示为QuickCheck属性。不过,作为一个非常满意QuickCheck的用户,我会说它是一个
许多
总比什么都不做或到处乱搞强
|
![]() |
4
0
很抱歉告诉你,你不能这样做。
|
![]() |
5
0
我喜欢 this answer
同样,您可以使用断言函数:
(您可能需要定义
我 GHC将足够聪明,完全跳过它发现的任何虚假断言,而实际断言肯定会在失败时使您的程序崩溃。 依我看,这不太可能满足要求——您仍然需要在复杂场景中进行行为测试——但我想这有助于检查代码所做的基本假设是否正确。 |
![]() |
trpnd · 如何定义由两个任意单声道变压器组成的单声道变压器? 2 年前 |
![]() |
Fabus1184 · Haskell mapM_不打印 2 年前 |
![]() |
Gotthold · 基于范数约束向量的类型 2 年前 |
![]() |
jian · haskell将另一个函数用作输入参数 3 年前 |
![]() |
Jocafrei · 用Haskell函数实现最大公约数函数 6 年前 |