繁体   English   中英

如何创建Haskell刺猬类型'Gen a'的值?

[英]How to create a value of the Haskell hedgehog type `Gen a`?

我正在尝试编写一个基于属性的测试,以验证相等性是否相等。

为此,我需要能够通过提供Gen a类型的2个值来运行它:

fun_cong_equality
:: forall m a
. (Monad m, Arg a, Vary a, Eq a, Show a)
=> Gen a
-> Gen a
-> PropertyT m ()
fun_cong_equality genA genB = do
a <- forAll genA
b <- forAll genB
f <- forAllFn $ fn @a genA
f a === f b

prop_fun_cong_equality :: Property
prop_fun_cong_equality =
property $
    fun_cong_equality $ -- TODO need to pass 2 `Gen a` values as arguments

我的问题是:如何创建Gen a类型的值?

注意:基于属性的测试尚未完成,它仍然需要过滤生成的相等值。

我需要的是一个类型值为VaryArgEqShow实例的值。

Int恰好满足该条件。

一个解决方案是使用:

fun_cong_equality (Gen.int (Range.linear 1 100)) (Gen.int (Range.linear 1 100))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM