gpt4 book ai didi

haskell - 使用快速检查

转载 作者:行者123 更新时间:2023-12-02 11:02:48 25 4
gpt4 key购买 nike

我为foldl编写了一个实现,想检查它是否有效,我尝试了一些案例,它似乎运行良好,但我想确定一下。

我读到了有关quickCheck的内容并尝试了它,但我似乎无法让它工作,这是代码

foldl'' :: (b -> a -> b) -> b -> [a] -> b

test :: Eq b => (b -> a -> b) -> b -> [a] -> Bool
test f e ls = foldl'' f e ls == foldl f e ls

当我运行 quickCheck 测试 时,它会抛出以下错误:

No instance for (Show (b0 -> a0 -> b0))
arising from a use of `quickCheck'
Possible fix:
add an instance declaration for (Show (b0 -> a0 -> b0))
In the expression: quickCheck prueba
In an equation for `it': it = quickCheck prueba

最佳答案

您的属性需要三个输入:函数、元素和列表。问题在于 QuickCheck 不知道如何处理一般函数。

QuickCheck 需要工作的事情之一是将失败的测试用例写入控制台的能力。为此,它需要可以转换为 String 的值 - Show 类中的任何内容。由于函数不在 Show 中,因此无法将它们用于输入。这就是您的错误消息的来源。

一般来说,使用随机生成的函数进行测试会非常棘手。我只需编写一些具体函数,然后让 QuickCheck 随机生成起始值和元素列表。

关于haskell - 使用快速检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16201741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com