魔力Haskell 711543283X, 9787115432834

书签已装载, 书签制作方法请找 [email protected] 完全免费 本书是一本由浅入深的Haskell教程。书中首先介绍Haskell的基础语法和函数式编程的基本概念,以及GHC、GHCi、Cabal等工具的用

584 73 64MB

中文 Pages 354 [365] Year 2016

Report DMCA / Copyright

DOWNLOAD FILE

魔力Haskell
 711543283X, 9787115432834

Table of contents :
封面
书名
版权
前言
目录
第一部分 基础知识
第1章 基本语法和GHCi
1.1 注释
1.2 表达式
1.3 声明
1.3.1 类型声明和绑定声明
1.3.2 模块声明和导入声明
1.4 函数
1.5 GHCi
1.6 初级函数
第2章 data和模式匹配
2.1 数据声明data
2.2 模式匹配
2.2.1 无处不在的模式匹配
2.2.2 @pattern
2.3 各式各样的数据类型
2.3.1 多构造函数
2.3.2 完备性检查
2.3.3 无参数构造函数
2.3.4 data与类型变量
2.3.5 记录语法
2.4 排版规则
第3章 列表、递归和盒子比喻
3.1 列表
3.1.1 等差数列
3.1.2 匹配列表
3.2 递归操作
3.3 盒子比喻
第4章 元组、类型推断和高阶函数
4.1 元组
4.2 类型推断
4.3 高阶函数
4.3.1 拉链和zipWith
4.3.2 柯里化
第5章 常用的高阶函数和函数的补充语法
5.1 应用函数$和&
5.2 匿名函数
5.3 组合函数
5.4 函数的补充语法
5.4.1 where
5.4.2 guard
5.4.3 MultiWayIf
5.4.4 where与let
5.5 Point free
5.6 黑魔法词汇表
第6章 常用的列表操作:映射、过滤、折叠和扫描
6.1 映射
6.2 过滤
6.3 折叠
6.4 扫描
6.5 方向是相对的
第7章 类型类
7.1 实例声明
7.2 类声明
7.3 类型类的实现
7.3.1 层级和约束
7.3.2 推导类型类
7.3.3 Show/Read
第8章 数字相关的类型类
8.1 顺序类
8.2 data和类型约束
8.3 枚举类
8.4 边界类
8.5 数字类
第9章 type、newtype和惰性求值
9.1 类型别名type
9.2 新类型声明newtype
9.3 惰性求值
9.3.1 标记语义、常态和弱常态
9.3.2 seq和deepseq
第10章 模块语法以及cabal、Haddock工具
10.1 模块语法
10.2 使用cabal
10.2.1 使用cabal安装依赖
10.2.2 项目的cabal配置
10.3 Haddock
第二部分 重要的类型和类型类
第11章 函子
11.1 容器抽象
11.2 范畴
11.3 Identity和Const
11.4 IO函子
第12章 透镜组
12.1 getter和setter
12.2 透镜组
12.3 view、set和over函数
12.3.1 over函数
12.3.2 set函数
12.3.3 view函数
12.4 函数库
第13章 应用函子
13.1 函子的局限
13.2 什么是函子
13.2.1 Reader应用函子
13.2.2 自然升格
13.3 IO应用函子
第14章 单位半群和一些有趣的应用函子
14.1 单位半群
14.1.1 Endo单位半群
14.1.2 自由单位半群
14.1.3 逆
14.2 当单位半群遇上应用函子
14.2.1 Const a的应用函子实例
14.2.2 选择应用函子
14.2.3 拉链应用函子
第15章 解析器
15.1 参数解析
15.2 optparse-applicative
15.3 选择解析
第16章 单子
16.1 应用函子的局限
16.2 什么是单子
16.2.1 粘合函数
16.2.2 do语法糖
16.3 IO单子
第17章 八皇后问题和列表单子
17.1 列表单子与数组归纳
17.2 八皇后问题
17.3 MonadPlus
17.4 结构控制函数
17.4.1 sequence/sequence_
17.4.2 mapM/mapM_
17.4.3 replicateM/replicateM_
17.4.4 forever
17.4.5 filterM
17.4.6 foldM/foldM_
第18章 Reader单子
18.1 (->)a的单子实例声明
18.2 模板渲染
18.3 Reader新类型
第19章 State单子
19.1 什么是State单子
19.2 随机数
19.3 简易计算器
第20章 IO和它的伙伴们
20.1 IO单子的本质
20.2 基本IO操作
20.3 IO中的变量
20 4 forkIO
20.5 ST单子
20.6 后门函数
第三部分 高级类型类和项目实践
第21章 语言扩展和程序标注
21.1 语言扩展
21.2 严格求值数据项
21.3 惰性模式
21.4 程序标注
21.5 编译选项
21.6 运行分析
第22章 Foldable和Traversable
22.1 Foldable
22.2 折叠与单位半群
22.3 Traversable
22.4 推导规则
22.5 Data.Coerce
第23章 列表、数组和散列表
23.1 列表
23.2 数组
23.3 散列表
第24章 单子变换
24.1 Kleisli范畴
24.2 ReaderT
24.3 Identity和IdentityT
24.4 StateT
24.5 RandT
第25章 单子变换的升格操作
25.1 MonadIO
25.2 MonadState和MonadReader
25.3 类型家族
25.4 Lazy StateT和Strict StateT
25.5 Writer单子
第26章 高效字符串处理
26.1 bytestring函数库
26.1.1 Lazy ByteString
26.1.2 ByteString Builder
26.2 text和utf8-string函数库
26.3 mono-traversable函数库
第27章 网络编程
27.1 wai/warp
27.2 wai-extra
27.3 HTTP的单子抽象
27.4 WebSocket编程
27.5 Socket编程
第28章 Haskell与数据库
28.1 persistent
28.2 esqueleto
第29章 模板编程
29.1 什么是模板
29.2 Q单子
29.3 拼接
29.4 reify
第30章 并发和并行编程
30.1 运行时工作原理
30.2 并行编程
30.3 并发编程
30.3.1 MVar
30.3.2 STM
30.3.3 aysnc
第31章 高级类型编程
31.1 Typeable和Dynamic
31.2 存在类型
31.3 类型家族、数据家族和GADT
31.3.1 类型家族
31.3.2 数据家族
31.3.3 GADT
31.4 数据类别DataKinds
第32章 序列化/反序列化与泛型编程
32.1 aeson函数库
32.1.1 使用模板编程自动生成ToJSON/FromJSON实例
32.1.2 使用泛型提供的ToJSON/FromJSON
32.2 泛型
第33章 Haskell中的异常处理
33.1 使用Either/Maybe表示异常
33.2 运行时异常
33.2.1 异步异常
33.2.2 资源的清理和释放
33.3 纯函数中的异常处理
33.4 异常和单子变换
33.4.1 exceptions
33.4.2 monad-control
33.5 常见的异常处理问题

Polecaj historie