学习Haskell第一课
其实从7月底就开始把Haskell的学习规划入日常了,但是平时事情实在是太多,工作任务一个接着一个,无奈一直没有成块的时间来学习这门语言。虽然时间比较零碎,该做的事情还是要做的。
一、TypeClass
Haskell是一门纯粹的、强类型函数式编程语言,每个函数及其参数都有指定的变量类型,如果没有显示指定,编译器也会做type inference。TypeClass用来范化类型,这是有实际需求的。譬如head函数,把一个list中的第一个元素取出来,但是第一个元素有可能是整数,有可能是字符串,也有可能是另一个list,TypeClass指定某些类型对同一个class,来实现模板化的操作(只用一个接口即可)。PS. Haskell类型名字都以大写字母开头。
TypeClass的种类
1.1 Eq
包含可判断相等性的类型,譬如整形,浮点,字符串都是其成员。除了函数无法比较。
1.2 Ord
可以用来比较大小的类型。
1.3 Show/Read
Show表示可以用字符串表示的类型,Read与Show相反,通过read函数将字符串转换成为Read的某成员类型。
1.4 Enum
可以枚举的类型(连续,不是函数的连续性概念),譬如自然数,浮点数,Haskell认为都是连续的。
1.5 Bounded
有边界的类型。
1.6 Num
数字类型。实数和整数。
1.7 Integral
Int和Integer。
1.8 Floating
Float和Double。
二、函数语法
2.1 模式匹配
针对参数x的实际值x1、x2、x3 .etc,实现f(x),如同分段函数
要注意函数定义的顺序,因为是从第一个开始匹配的。注意完备性,覆盖要用的所有参数,防止异常。