安装了QuickCheck,
我再次安装cabal安装QuickCheck-1.2.0.0
并再次加载并有错误
找不到模块Test.QuickCheck.Batch':
It is a member of the hidden packageQuickCheck-1.2.0.0'.
它是隐藏包,怎么办?
ghc -o tryprog hello.hs -package QuickCheck-1.2.0.0:无法满足-package QuickCheck-1.2.0.0(使用-v获取更多信息)
除了这个错误,如何使用包quickcheck-1.2.0.0加载.hs文件?
为这个问题增加了50分
我真诚地乞求你对这个装载问题的帮助!!
有谁知道如何使用QuickCheck在Haskell中定义生成器,以便仅一次选择所选元素?
我已经意识到我可能需要一个“ Gen(也许是肯定的)”生成器,但是当然,它会重复生成数字。我想要这样,以便选择的数字不会重复。在返回数字的情况下,我想只返回,而在所有随机数都用完的情况下,我要不返回任何信息。
谢谢,
标记
我想扩展QuickCheck以在测试失败时给出更好的消息(而不仅仅是种子).例如,我希望能够创建以下内容:
eqTest :: Eq a => a -> a -> TestResult
eqTest x y = if x == y
then HappyResult
else SadResult $ show x <> " /= " <> show y
Run Code Online (Sandbox Code Playgroud)
或者(与一个Monoid"停止" SadResult和"继续" 的实例HappyResult,类似于(&&)操作员TestResult)
listEqTest :: Eq a => [a] -> [a] -> TestResult
listEqTest [] [] = HappyResult
listEqTest [] ys = SadResult $ "Ran out of xs to compare to " <> show ys
listEqTest …Run Code Online (Sandbox Code Playgroud) 每次运行"quickCheck prop_xyz"时,都会使用一个新的随机种子.如何强制QuickCheck始终使用相同的随机种子?
谢谢!
有没有办法伪造这个(错误的)财产:
prop :: Eq a => [a] -> Bool
prop xs = reverse xs == xs
Run Code Online (Sandbox Code Playgroud)
当我使用QuickCheck及以后的VerboseCheck时,它提供了100种不同形式:
[(),(),(),(),(),(),(),(),(),(),(),(),(),(),()]
Run Code Online (Sandbox Code Playgroud)
通过:
最终结果是:
+++ OK, passed 100 tests.
Run Code Online (Sandbox Code Playgroud) 我有一个属性,其中包含一个字符串列表:
myProp :: [String] -> Bool
我需要约束QuickCheck生成的输入,以便列表中只有非空字符串.
我怎样才能做到这一点?
Checkers 是一个可重用的QuickCheck属性库,特别是对于标准类型类
如何编写检查器实例来测试我的应用验证实例是否有效?
import Test.QuickCheck
import Test.QuickCheck.Checkers
import Test.QuickCheck.Classes
import Control.Applicative
import Data.Monoid
data Validation e a =
Error e
| Scss a
deriving (Eq, Show)
instance Functor (Validation e) where
fmap _ (Error e) = Error e
fmap f (Scss a) = Scss $ f a
instance Monoid e => Applicative (Validation e) where
pure = Scss
(<*>) (Scss f) (Scss a) = Scss $ f a
(<*>) (Error g) (Scss a) = Error g
(<*>) (Scss a) (Error …Run Code Online (Sandbox Code Playgroud) 我可以使用一个如何使用的完整示例quickCheckAll.这是我到目前为止所尝试的:
在文件中A.hs:
module A where
import Test.QuickCheck
prop_a = 1 == 0
check = do
return []
$quickCheckAll
Run Code Online (Sandbox Code Playgroud)
在另一个应该驱动测试的文件中:
import A
main :: IO ()
main = do
check
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为check没有类型IO ().我应该按照文档中的说明"执行检查" ?
有一个forAll量词,它返回一个属性,检查所有测试用例是否通过.有没有办法定义一个"存在"量词,它返回一个属性,检查它至少有一个测试用例通过?
在Haskell QuickCheck中,如何生成一个字符串,使其只包含字符'S'和'C','S'和'C'的位置是随机的?
例如,"SCCS","SSSS","CCCC","CSSCCS",""
我的用例是:我有两个功能countCAndS :: String -> (Int, Int),countCAndS' :: String -> (Int, Int).它们具有相同的类型签名.我想编写一个quickcheck属性,以便我可以将相同的字符串传递给这两个不同的函数,并检查输出是否相同.