书签已装载, 书签制作方法请找 [email protected] 完全免费 支持千人!
Haskell函数式编程入门(第2版)第1卷
✍ Scribed by 张淞 刘长生
- Year
- 2018
- Tongue
- Chinese
- Leaves
- 496
- Category
- Library
No coin nor oath required. For personal study only.
✦ Synopsis
书签已装载,
书签制作方法请找 [email protected]
完全免费
支持千人!
✦ Table of Contents
目录页
I 基础篇
1 Haskell简介
1.1 Haskell的由来
1.2 Haskell编译器的安装以及编写环境
1.2.1 GHCi的使用
1.3 .hs和.lhs文件、注释与库函数
1.4 第一个Haskell程序——HelloWorld
2 类型系统和函数
2.1 Haskell的类型与数据
2.1.1 Haskell常用数据类型
2.1.2 函数类型
2.1.3 类型的别名
2.1.4 类型的重要性
2.2 Haskell中的类型类
2.2.1 相等类型类:Eq
2.2.2 有序类型类:Ord
2.2.3 枚举类型类:Enum
2.2.4 有界类型类:Bounded
2.2.5 数类型类:Num
2.3 Haskell中的函数
2.3.1 Haskell中的值
2.3.2 函数思想入门
2.3.3 函数的基本定义格式
2.4 表达式
2.4.1 表达式的应用
2.4.2 参数的绑定
2.5 Haskell中的表达式
2.5.1 条件表达式
2.5.2 情形分析表达式
2.5.3 守卫表达式
2.5.4 模式匹配
2.5.5 运算符与函数
2.5.6 运算符与自定义运算符
2.6 在GHCi中定义函数
3 基于布尔值的函数
3.1 关键字module与import简介
3.2 简易布尔值的函数
3.3 与非门和或非门
4 库函数及其应用
4.1 预加载库函数
4.1.1 常用函数
4.1.2 基于列表的函数
4.2 定义历法公式
4.3 字符串处理的函数
4.4 常用模块简介
4.4.1 Data.Char
4.4.2 Data.List
4.4.3 Data.Bits
II 初级篇
5 递归函数
5.1 递归函数的概念
5.2 简单递归函数
5.3 扩展递归与尾递归
5.4 互调递归
5.5 麦卡锡的91函数
5.6 斐波那契数列
5.7 十进制数字转成罗马数字
5.8 二分搜索
5.9 汉诺塔
5.10 排序算法
5.10.1 插入排序
5.10.2 冒泡排序
5.10.3 选择排序
5.10.4 快速排序
5.10.5 归并排序
5.11 递归基本条件与程序终止
5.12 递归与不动点
5.12.1 牛顿法开方
5.13 无基本条件递归和惰性求值
5.13.1 变得懒惰
6 列表内包
6.1 列表生成器
6.1.1 并列的列表内包与一般化的列表内包
6.2 素数相关趣题
6.2.1 埃拉托斯特尼筛法
6.3 凯撒加密
6.3.1 解密
6.4 排列与组合问题
6.4.1 排列问题
6.4.2 错位排列问题
6.4.3 组合问题
6.5 八皇后问题
6.6 计算矩阵乘法
6.6.1 斐波那契数列与矩阵乘法
6.7 最短路径与矩阵乘法
7 高阶函数
7.1 简单高阶函数
7.2 折叠函数foldr与foldl
7.2.1 右折叠函数foldr
7.2.2 左折叠函数foldl
7.3 mapAccumL与mapAccumR函数
7.4 复合函数
8 定义数据类型
8.1 数据类型的定义
8.1.1 枚举类型
8.1.2 构造类型
8.1.3 参数化类型
8.1.4 递归类型
8.1.5 杂合定义类型
8.2 类型的同构
8.3 多分支条件、模式匹配守卫、观察模式表达式与模式的别名
8.3.1 多分支条件表达式
8.3.2 模式匹配守卫表达式
8.3.3 观察模式表达式
8.3.4 模式的的别名
8.4 使用newtype定义类型
8.5 数学归纳法的有效性
8.6 树
8.7 卡塔兰数问题
8.8 霍夫曼编码
8.9 解24点
8.10 Zipper
8.10.1 Zipper的应用
8.11 一般化的代数数据类型
8.11.1 简易谓词逻辑计算器
8.12 类型的kind
8.12.1 类型的kind
8.13 空类型的声明
9 类型类简介
9.1 定义类型类
9.2 Haskell中常见类型类
9.2.1 有序类型类Ord
9.2.2 有界类型类Bounded
9.2.3 枚举类型类Enum
9.2.4 索引类型类Ix
9.2.5 可显示类型类Show
9.2.6 函子类型类Functor
9.2.7 可应用函子Applicative
9.2.8 选择可应用函子Alternative
9.2.9 简易字符解析器
9.2.10 可读类型类Read
9.2.11 字符串类型类IsString
9.3 类型类实例的实现
9.3.1 使用deriving关键字
9.3.2 使用instance关键字
9.3.3 空instance与DeriveAnyClasses语言扩展
9.3.4 newtype定义类型的类型类实例导出
9.3.5 为类型的别名实现类型类的实例
9.3.6 独立的类型类实例导出
9.3.7 deriving的导出策略
9.3.8 derive库
9.3.9 DriFT工具
9.4 Haskell中其他常见的类型类
9.4.1 单位半群类型类Monoid
9.4.2 半群类型类Semigroup
9.4.3 默认值类型类Default
9.4.4 可折叠类型类Foldable
9.4.5 可游历类型类Traversable
9.4.6 二函子类型类Bifunctor
9.4.7 数类型类Num
9.5 类型类中的类型依赖
9.6 零参数类型类
9.7 类型类中的关联类型
9.7.1 重载的列表
9.8 运行时重载
9.9 Existential类型
III 中级篇
10 Monad初步
10.1 Monad简介
10.2 从Identity monad开始
10.3 Maybe monad
10.4 Monad定律
10.5 列表monad
10.6 Monad相关函数与运算符
10.6.1 MonadPlus
10.6.2 Monad相关函数
10.7 Functor、Applicative与Monad的关系
10.7.1 Monad的定义
10.7.2 Applicative与Monad的差异
10.7.3 GHC中Applicative与Monad的历史问题
10.7.4 AMP问题的未来
11 系统编程及输入/输出
11.1 不纯函数与副作用
11.2 IO monad
11.3 输入/输出处理
11.3.1 Control.Monad中的函数
11.3.2 系统环境变量与命令行参数
11.3.3 数据的读写
11.4 格式化输出printf函数
11.4.1 printf函数的简易实现
11.5 星际译王词典
11.6 系统编程
11.6.1 目录与文件操作的API
11.6.2 系统进程的相关API
11.7 不安全的IO
11.8 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 随机数的生成
12.4.1 mwc-random库
13 Monad转换器
13.1 从IdentityT monad转换器开始
13.2 Monad转换器组合与复合Monad的区别
13.2.1 Monad转换器的组合顺序
13.3 lift、liftIO与liftBase
13.3.1 MonadTrans类型类与lift
13.3.2 MonadIO类型类与liftIO
13.3.3 MonadBase与liftBase
13.4 简易monad编译器
13.5 语法分析monad
13.6 本章小结
14 更多Monad
14.1 语法分析器Monad组合子
14.1.1 简易语法分析器的实现
14.2 Parsec库简介
14.3 上下文无关文法
14.4 基于语法分析器的计算器
14.5 Stream monad
14.6 Free monad
14.7 续延monad
14.7.1 续延
14.7.2 定义续延monad
14.7.3 调用当前续延的函数callCC
14.8 数据流处理Monad
14.9 pipes与conduit库简介
14.9.1 conduit
14.9.2 pipes
附录页
参考文献
📜 SIMILAR VOLUMES
书签已装载, 书签制作方法请找 [email protected] 完全免费 《haskell函数式编程入门》是一本讲解haskell这门经过精心设计和锤炼的纯函数式编程语言的书,同时也是一本通过haskell来讲解函数式编程的方法与思想的书。全书共分三个部分。第一部分介绍函数式编程在解决数学与算法问题的精简与直观的特色,让不熟悉haskell的读者对其建立初步的了解,同时通过解决一些算法问题,如裴波那契数列、八皇后问题、排序问题、24点等,引发一些对函数式编程方式的思考;第二部分介绍一些略微深入的haskell内容,包括函子、monoid、io与monad转换器等
<p>《Haskell函数式编程基础(原书第3版)》可作为计算机科学和其他相关学科的高年级本科生、研究生的教材,也可供对函数式程序设计感兴趣的程序员、软件工程师等参考学习。</p>
书签已装载, 书签制作方法请找 [email protected] 完全免费 《Haskell函数式编程基础(原书第3版)》可作为计算机科学和其他相关学科的高年级本科生、研究生的教材,也可供对函数式程序设计感兴趣的程序员、软件工程师等参考学习。
函数式编程具有代码简洁、开发速度快、易理解、易维护、扩展性强的特点,在某些领域可以解决让命令式编程头痛的问题,具有广泛的应用场景和良好的发展前景。本书是函数式编程的零基础教程,以Elixir为例讲解函数式编程与命令式编程的区别,帮助读者掌握函数式编程的基本概念和思想(如不可变值、显式数据转换、模式匹配、递归函数、高阶函数、多态等),并避免新手常犯的错误。本书尤其适合对Elixir感兴趣且无函数式编程基础的读者入门学习。
<p>《JavaScript ES6函数式编程入门经典》使用JavaScript ES6带你学习函数式</p> <p>编程。你将学习柯里化、偏函数、高阶函数以及Monad等概念。</p> <p>目前,编程语言已经将焦点从对象转移到函数。JavaScript支持函数式编</p> <p>程,并允许开发者编写精心设计的代码。</p> <p>主要内容</p> <p>● 掌握函数式编程的概念</p> <p>● 清楚函数在JavaScript中的地位</p> <p>● 理解真实的函数式类库,并创建一个模拟underscore.js的函数式类库</p> <p>● 实践纯错误处理技术,例如函子