【发布时间】:2016-02-16 06:07:46
【问题描述】:
我想从无限的浮动列表中进行采样以供 QuickCheck 使用。但是,由于我打算使用除法,我想从该列表中删除 zero。这是一个概念上很简单的问题,我想知道我是否可以通过列表理解来做到这一点,如果不能,在 Haskell 中实现这一目标的最简单方法是什么?
[x | x <- floats, x /= 0] -- this seems reasonable, but where do I get floats from?
我目前的解决方法(糟糕):
import Test.QuickTest
divGen :: Gen (Maybe Float)
divGen = do
x <- arbitrary
if x /= 0
then return $ Just x
else return Nothing
【问题讨论】:
-
"我从哪里得到
floats?"真是个问题;我看不出可以从给出的信息中得到答案。你想在那个列表中出现什么......? -
@DanielWagner,检查我的编辑。该解决方法有效,并为我提供了我期望的值。
-
看来您的实际问题是如何生成一个无限的随机浮点数列表?问题中的列表理解非常适合从无限的浮点数列表中过滤零元素。
标签: haskell list-comprehension quickcheck