Rickey 裘 一无所知

Haskell学习第一课

2017-08-27
Kai Qiu

学习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),如同分段函数

要注意函数定义的顺序,因为是从第一个开始匹配的。注意完备性,覆盖要用的所有参数,防止异常。


评论