《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)

即它用自己来定义自己。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容