haskell - 如何使用 QuickCheck 在范围内选择一个值?
问题描述
我有以下代码用于在以下站点上创建挑战:codewars
describe "Random cases" $ do
it "It should handle random test cases" $
property $ prop_check where
prop_check (Positive x) = solution x == ref_sol x
--- ref_sol function
我想将x
prop_check 中的值设置为大于 4 的正整数,最大为五位数(不超过五位数,即:最大值 = 99999)。
我将如何接近它?
解决方案
您可以使用 QuickCheck 的choose
功能选择一个包含范围内的值。最简单的方法可能是prop_check
用do
符号编写:
prop_check :: Gen Bool
prop_check = do
x <- choose (5, 99999) :: Gen Integer
return $ solution x == ref_sol x
这里,x
是一个Integer
介于5
和之间的值99999
。
根据 and 的类型solution
,ref_sol
您可能不需要Gen Integer
第一行的类型注释。但是,由于我不知道这些函数的类型,所以我不得不添加注释。
推荐阅读
- javascript - 为什么要标记
- python - 将用户限制在一定范围内的值
- java - 集成测试因 cobertura 失败
- android - 如何在进行房间迁移时重命名列
- java - 如果我们在 Java 中的当前线程多次调用 condition.await() 会发生什么
- regex - 正则表达式从逗号之间的最后一个中提取(完全匹配)单词?
- reactjs - 如何在我的 react js 网站中实现 sqlite3 数据库
- javascript - 当 Vue 或 React 发送数据时,是否可以从服务器获取数据?
- yaml - 是否可以使用 js-yaml 加载将属性设置为文件引用的 yaml 文件?
- karate - 从通过示例部分传递的 yml 文件驱动的数据在空手道中不起作用