《Real World Haskell》 第三章读书笔记

我的博客地址:链接

CHAPTER 3:定义类型,简化函数


定义一个新的数据类型

data关键字用于定义新的数据类型

data BookInfo = Book Int String [String] 
     deriving (Show)

值构造器&类型构造器
值构造器和类型构造器可以同名

类型的别名

type关键字用于设置类型别名

type CustomerID = Int
type ReviewBody = String
data BetterReview = BetterReview BookInfo CustomerID ReviewBody

代数数据类型

C 结构和 Haskell 的代数数据类型最大的差别是,代数数据类型的成分是匿名且按位置排序的

模式匹配

本质上就是匹配值构造器,并将传给构造器的值绑定到变量上。
因为模式匹配的过程就像是逆转一个值的构造(construction)过程,因此它有时候也被称为解构(deconstruction)。
模式匹配的“深度”并没有限制。
在给一个类型写一组匹配模式时,一定要涵盖构造器的所有可能情况。

记录语法(Record Syntax)

定义一种数据类型的同时,定义好每个成分的访问器。
访问器的本质是一个函数。

参数化类型(Parameterized Types)

即范型,是类型的多态

递归类型

比如List:

data List a = Cons a (List a) 
            | Nil 
              deriving (Show)

即它用自己来定义自己。

你可能感兴趣的:(《Real World Haskell》 第三章读书笔记)