testing - 如何在 SmallCheck 中使用 monadic 属性?

标签 testing haskell monads smallcheck

我想编写一个使用 IO 的 SmallCheck 属性,但我不知道应该怎么做。具体来说,目标是编写一个属性,该属性是 Testable IO Bool 的一个实例,这样我就可以将它提供给 smallCheck(或 testProperty 测试框架)。不幸的是,我能想到的最好的是:

smallCheck 5 (\(x :: Int) → return True :: IO Bool)

这不起作用,因为它是 Testable IO (IO Bool) 而不是 Testable IO Bool 的实例,但我不知道如何重写这样它就可以工作了。

如有任何帮助,我们将不胜感激。

最佳答案

您需要 monadic 组合器。它采用任意 monad m 并将其包装到一个 Property 中,该 PropertyTestable 的一个实例。

smallCheck 5  $ \(x :: Int) -> monadic $ (return True :: IO Bool)

关于testing - 如何在 SmallCheck 中使用 monadic 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19673383/

相关文章:

ruby-on-rails - 访问其他模型

haskell - 是否可以让 Haskell 堆栈使用 nix 提供的 Haskell 包?

haskell - 返回从 monad 中提取的元素;多余的?

Haskell ST Monad : No instance for (MArray (STArray s) Int (ST s1))

python - 我应该写一个 setter 来访问类变量进行测试吗?

java - clear() 函数不会清除输入网页元素的默认值

haskell - 是否有惰性 `ByteString` 的参数版本?

function - 为什么 `\x -> f x x` = `join f` ?

node.js - 在 Mocha 中 describe() 的作用是什么?

haskell - 在haskell中解析Karva符号