10 Monad初步
10.1 Monad简介
10.2 从Identity Monad开始
10.3 Maybe Monad
10.4 Monad定律
10.5 列表Monad
10.6 Monad相关运算符
10.7 MonadPlus
10.8 Functor、Applicative 与Monad 的关系
本章小结
11 系统编程及输入/输出
11.1 不纯函数与副作用
11.2 IO Monad
11.3 输入/输出处理
11.3.1 Control.Monad 中的函数
11.3.2 系统环境变量与命令行参数
11.3.3 数据的读写
11.3.4 格式化输出printf 函数
11.3.5 printf 函数的简易实现
11.4 星际译王词典
11.4.1 二分法查找
11.4.2 散列表的使用
11.5 简易异常处理
11.6 Haskell中的时间
本章小结
12 记录器Monad、读取器Monad、状态Monad
12.1 记录器Monad
12.1.1 MonadWriter
12.1.2 记录归并排序过程
12.2 读取器Monad
12.2.1 MonadReader
12.2.2 变量环境的引用
12.3 状态Monad
12.3.1 状态Monad 标签器
12.3.2 用状态Monad 实现栈结构
12.3.3 状态Monad、FunApp单位半群和读取器Monad的关系
12.3.4 MonadState
12.3.5 基于栈的计算器
12.4 随机数的生成
本章小结
13 Monad转换器
13.1 从IdentityT Monad 转换器开始
13.2 Monad转换器组合与复合Monad 的区别
13.3 Monad转换器的组合顺序
13.4 lift 与liftIO
13.5 简易Monad编译器
13.6 语法分析器Monad组合子
13.6.1 简易语法分析器的实现
13.6.2 Parsec 库简介
13.6.3 上下文无关文法
13.6.4 基于语法分析器的计算器
本章小结
1 Haskell简介
1.1 Haskell的由来
1.2 Haskell编译器的安装以及编写环境
1.3 GHCi 的使用
1.3.1 GHCi 中的命令
1.3.2 在GHCi 中调用函数
1.4 .hs 和.lhs文件、注释与库函数
1.5 第一个Haskell程序HelloWorld!
7 高阶函数与复合函数
7.1 简单高阶函数
7.2 折叠函数foldr与foldl
7.3 mapAccumL 与mapAccumR 函数
7.4 复合函数
本章小结