--|为详尽测试键入类和实例--2016年功能编程课程。--托马斯·哈格伦模块排气测试,其中----------------------------------------------------------------------------------*“小型”类型的类别--|“小”类型的类别,例如我们可以枚举的类型--所有值class Small a其中值::[a]--|枚举Enum和Bounded中类型的所有值的简单方法enumAll::(绑定a,枚举a)=>[a]enumAll=[minBound..maxBound]实例Small(),其中值=[()]instance Small Bool其中values=enumAllinstance Small Char,其中values=enumAll--instance Small Int,其中values=enumAll--有限,但不小。。。--|我们认为成对的小类型也很小instance(Small a,Small b)=>Small(a,b),其中值=[(x,y)|x<-值,y<-值]----------------------------------------------------------------------------------*性能详尽测试类--|可以彻底测试的属性类别类AlwaysTrue道具,其中始终正确::prop->Bool--| Bool是可测试的(基本情况)实例AlwaysTrue Bool,其中始终为真b=b--|具有任意数量小参数的函数都是可测试的(归纳步骤)instance(Small a,AlwaysTrue prop)=>AlwaysTrue(a->prop),其中alwaysTrue f=和[alwaysTrue(f x)|x<-值]exaustiveTest p=始终为真p--|逻辑含义infixr 0==>h==>c=不是h||c