Programming in Haskell是一本入门Haskell的好书,介绍页面以及配套的slides, vedios, codes都在这里。
写出这些表达式的type
1 | ['a', 'b', 'c'] -- :: [Char] |
写出这些函数的type
1 | second xs = head (tail xs) -- [a] -> a |
在Hugs中验证前两题
第二题中,有几个函数用:t
查看的type是用t
t1
表示的,和a
b
是一个意思。
为什么“将所有的函数类型都定义为Eq class
的实例(instance)”是不可行的?
题目中给出的两个函数相等的定义是这样:
- type相同
- 对于任意的输入,都拥有相同的输出
显然,编译器不可能对两个函数测试所有的参数来判断它们是否相等。因为可能的参数是有无穷多个的。