嗨我有以下代码
import Data.Maybe
import Test.QuickCheck
import System.Random
rndExpr :: Gen Expr -> IO Expr
rndExpr gen = do
rnd <- newStdGen
return (generate 5 rnd gen)
但我得到“不在“生成”范围内”,为什么会这样?
问候
达伦
编辑我正在导入 Test.QuickCheck 但它仍然抱怨“生成”不在范围内。
Edit 2
您将如何编写此函数以便它可以与 Quickcheck 版本 2 一起使用?我简单地尝试将“unGen”放在生成的位置但没有成功,我还安装了quickcheck v 2(cabal install QuickCheck-2.1.0.3)
我需要一个具有以下属性的函数stdGen->Gen Expr->Expr'
unGen 似乎给了我这个功能,但正如我所说,我的编译器找不到这个函数。还有其他函数可以用来解决这个问题吗?
看来您正在使用 Test.QuickCheck 中的生成器,并且生成是 QuickCheck 版本 1 中的函数。在 QuickCheck 的第 2 版中,情况有些不同,因此没有这样的功能。但是,您至少需要导入 Test.QuickCheck,并且可以从以下位置获得类似的功能unGen
像这样:
rundExpr gen = fmap (flip (unGen gen) 5) newStdGen
请注意unGen
位于 Test.QuickCheck.Gen 中,因此您也必须导入它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)