正确性(这不是定理证明是关于在实践中检验像quickCheck
)证明/测试的通用功能
让f
一些通用的功能
f :: RESTRICTIONS => GENERICS
一些“理想”性质(即是不是黑客,是不可变的,...)通常是一个纯粹的Haskell泛型函数。
假设我们想测试一下,主要的问题是
如果我们有(井)测试该功能为某种特定类型(例如Int
),我们可以假设它是正确的所有类型?(匹配的限制,当然)
(用“行之有效的”我的意思是“所有”功能{domain X properties}
已经过测试)
Theorically 我们可以肯定,但是,我不知道,如果一些额外的财产,限制,...在实例化过程(即编译)可能有影响。
谢谢!
注测试也许使用某些类型的特定性质(例如Int
),但这些性能不能是测试属性的一部分。例如。如果Monoid
是限制条件,那么关联性可以是是测试属性的一部分(但不是限制条件下的交换性)。
例
让f
repeatedHeader :: Eq a => [a] -> Bool
repeatedHeader (x:y:_) = x == y
repeatedHeader _ = False
test1 = repeatedHeader [1,1,2] == True
test2 = repeatedHeader [1,2,3] == False
好点的想法。谢谢! – josejuan