haskell - 在 Haskell 中生成不等于指定整数的整数列表?

标签 haskell generator quickcheck

是否有允许我生成不包含指定整数的整数列表的修饰符?

这是一个完成相同工作的函数:

listofInts :: Int -> Gen [Integer]
listofInts  a = rmInt a [] arbitrary

rmInt :: Int -> [Int] -> [Int] -> [Int]
rmInt a newList [] = newList
rmInt a newList (x:xs)
|a == x = newList : rmInt a xs
|otherwise = newList : x : rmInt a xs

最佳答案

listOfsuchThat来自 Test.QuickCheck.Gen 的组合器应该使您能够做到这一点。

listofInts :: Int -> Gen [Integer]
listOfInts x = listOf (suchThat arbitrary (/=x))

这种方法的优点是更尊重代的大小参数:suchThat确保与谓词不匹配的生成值不会影响大小。

关于haskell - 在 Haskell 中生成不等于指定整数的整数列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29607950/

相关文章:

ruby - 提高功能性能

python生成器垃圾收集

haskell - 如何使用 QuickCheck 来测试函数是否终止?

haskell - 使用 Haskell 的 QuickCheck 生成特定长度的列表

macos - 让 HDBC 在 Mac 上工作

functional-programming - Haskell 函数定义语法

c++ - 我如何创建一个在单独的方法中工作的 C++ 随机正态分布?

java - Agitar 和基于 Quickcheck 属性的测试有什么区别?

haskell - 实时持久队列总数

Python:如何将生成器输出保存到文本文件中?