【发布时间】:2019-11-07 12:25:52
【问题描述】:
如果我们定义这样的函数
fun :: Int -> Property
然后运行
quickCheck fun
quickCheck 开始生成 Int 类型的随机数据。问题是 quickCheck 如何检测 fun 的参数数据类型是 Int 而不是任何其他数据类型?如果我把问题说得更笼统,我应该问一下,如果我们有这样一个名为 fun 的函数
fun :: datatype_1 -> datatype_2 -> ... -> datatype_n -> Property
quickCheck 如何检测每个单独的 datatype_1、datatype_2、... 和 datatype_n 的类型?以及它如何检测函数 fun 需要多少个参数?
【问题讨论】:
-
它不必检测它,它只是将其限制为
Arbitrary的实例。 -
至于数据类型的数量。在 Haskell 中,每个函数都恰好接受一个参数。因此,它使用某种递归来递归从该函数返回的函数,等等。
标签: haskell quickcheck