Haskell函数式编程入门

Haskell函数式编程入门

暂无评价综合评分的显示会考虑用户真实性等多项因素,每部作品出现综合评分的时间不定。
6.346 评价豆瓣读书
免费试读
¥37.76¥20.99
今日特价截止至:2019-09-20 02:00:00了解详情

作品简介

《Haskell函数式编程入门》是一本讲解Haskell这门经过精心设计和锤炼的纯函数式编程语言的书,同时也是一本通过Haskell来讲解函数式编程的方法与思想的书。全书共分三个部分。第一部分介绍函数式编程在解决数学与算法问题的精简与直观的特色,让不熟悉Haskell的读者对其建立初步的了解,同时通过解决一些算法问题,如裴波那契数列、八皇后问题、排序问题、24点等,引发一些对函数式编程方式的思考;第二部分介绍一些略微深入的Haskell内容,包括函子、Monoid、IO与Monad转换器等;最后一部分则涉及快速测试、惰性求值和并行编程等主题。

《Haskell函数式编程入门》既适合对Hasell和函数式编程感兴趣的程序员阅读,又适合作为Haskell语言入门教程,供计算机科学与数学专业的学生参考。

张淞,1989年1月出生于黑龙江省绥芬河市,酷爱数学、物理,进入大学后开始喜欢学习与研究各类编程语言,并成为了一名Haskell爱好者。2012年7月于英国诺丁汉大学获得计算机科学本科学位。2013年11月于英国牛津大学获得计算机科学硕士学位。目前喜欢学习与研究λ演算、类型系统、抽象代数、范畴论、逻辑证明、组合数学等内容。

作品目录

  1. 前言
  2. 致谢
  3. 第1章 Haskell简介
  4. 1.1 Haskell的由来
  5. 1.2 Haskell编译器的安装以及编写环境
  6. 1.3 GHCi 的使用
  7. 1.3.1 GHCi 中的命令
  8. 1.3.2 在GHCi 中调用函数
  9. 1.4 .hs 和.lhs文件、注释与库函数
  10. 1.5 第一个Haskell程序HelloWorld!
  11. 本章小结
  12. 第2章 类型系统和函数
  13. 2.1 Haskell的类型与数据
  14. 2.1.1 Haskell 常用数据类型
  15. 2.1.2 函数类型
  16. 2.1.3 类型的别名
  17. 2.1.4 类型的重要性
  18. 2.2 Haskell中的类型类
  19. 2.2.1 相等类型类:Eq
  20. 2.2.2 有序类型类:Ord
  21. 2.2.3 枚举类型类:Emum
  22. 2.2.4 有界类型类:Bounded
  23. 2.2.5 数字类型类:Num
  24. 2.2.6 可显示类型类:Show
  25. 2.2.7 小结
  26. 2.3 Haskell中的函数
  27. 2.3.1 Haskell 中的值
  28. 2.3.2 函数思想入门
  29. 2.3.3 函数的基本定义格式
  30. 2.3.4 λ表达式
  31. 2.3.5 参数的绑定
  32. 2.4 Haskell中的表达式
  33. 2.4.1 条件表达式
  34. 2.4.2 情况分析表达式
  35. 2.4.3 守卫表达式
  36. 2.4.4 模式匹配
  37. 2.4.5 运算符与函数
  38. 2.4.6 运算符与自定义运算符
  39. 本章小结
  40. 第3章 基于布尔值的函数
  41. 3.1 关键字module 与import 简介
  42. 3.2 简易布尔值的函数
  43. 3.3 与非门和或非门
  44. 本章小结
  45. 第4章 库函数及其应用
  46. 4.1 预加载库函数
  47. 4.1.1 常用函数
  48. 4.1.2 基于列表的函数
  49. 4.1.3 定义历法公式
  50. 4.1.4 字符串处理的函数
  51. 4.2 字符与位函数库简介
  52. 4.2.1 Data.Char
  53. 4.2.2 Data.Bits
  54. 本章小结
  55. 第5章 递归函数
  56. 5.1 递归函数的概念
  57. 5.2 简单递归函数
  58. 5.3 扩展递归与尾递归
  59. 5.4 互调递归
  60. 5.5 麦卡锡的 91函数
  61. 5.6 斐波那契数列
  62. 5.7 十进制数字转成罗马数字
  63. 5.8 二分法查找
  64. 5.9 汉诺塔
  65. 5.10 排序算法
  66. 5.10.1 插入排序
  67. 5.10.2 冒泡排序
  68. 5.10.3 选择排序
  69. 5.10.4 快速排序
  70. 5.10.5 归并排序
  71. 小结
  72. 5.11 递归基本条件与程序终止
  73. 5.12 递归与不动点
  74. 5.13 无基本条件递归和惰性求值
  75. 本章小结
  76. 第6章 列表内包
  77. 6.1 列表生成器
  78. 6.2 素数相关趣题
  79. 6.3 凯撒加密
  80. 6.3.1 加密
  81. 6.3.2 解密
  82. 6.4 排列与组合问题
  83. 6.4.1 排列问题
  84. 6.4.2 错位排列问题
  85. 6.4.3 组合问题
  86. 6.5 八皇后问题
  87. 6.6 计算矩阵乘法
  88. 6.7 最短路径算法与矩阵乘法
  89. 本章小结
  90. 第7章 高阶函数与复合函数
  91. 7.1 简单高阶函数
  92. 7.2 折叠函数foldr与foldl
  93. 7.3 mapAccumL 与mapAccumR 函数
  94. 7.4 复合函数
  95. 本章小结
  96. 第8章 定义数据类型
  97. 8.1 数据类型的定义
  98. 8.1.1 枚举类型
  99. 8.1.2 构造类型
  100. 8.1.3 参数化类型
  101. 8.1.4 递归类型
  102. 8.1.5 杂合定义类型
  103. 8.2 类型的同构
  104. 8.3 使用newtype 定义类型
  105. 8.4 数学归纳法的有效性
  106. 8.5 树
  107. 8.6 卡特兰数问题
  108. 8.7 霍夫曼编码
  109. 8.8 解 24点
  110. 8.9 Zipper
  111. 8.10 一般化的代数数据类型
  112. 8.11 类型的kind
  113. 8.11.1 类型的kind
  114. 8.11.2 空类型的声明
  115. 本章小结
  116. 第9章 定义类型类
  117. 9.1 定义类型类
  118. 9.2 Haskell中常见类型类
  119. 9.2.1 常用类型类
  120. 9.2.2 子Functor
  121. 9.2.3 Applicative
  122. 9.2.4 Alternative
  123. 9.2.5 简易字符识别器
  124. 9.2.6 Read 类型类
  125. 9.2.7 单位半群(Monoid)
  126. 9.2.8 Foldable与Monoid类型类
  127. 9.2.9 小结
  128. 9.3 类型类中的类型依赖
  129. 9.4 类型类中的关联类型
  130. 9.5 定长列表
  131. 9.6 运行时重载
  132. 9.7 Existential 类型
  133. 本章小结
  134. 第10章 Monad初步
  135. 10.1 Monad简介
  136. 10.2 从Identity Monad开始
  137. 10.3 Maybe Monad
  138. 10.4 Monad定律
  139. 10.5 列表Monad
  140. 10.6 Monad相关运算符
  141. 10.7 MonadPlus
  142. 10.8 Functor、Applicative 与Monad 的关系
  143. 本章小结
  144. 第11章 系统编程及输入/输出
  145. 11.1 不纯函数与副作用
  146. 11.2 IO Monad
  147. 11.3 输入/输出处理
  148. 11.3.1 Control.Monad 中的函数
  149. 11.3.2 系统环境变量与命令行参数
  150. 11.3.3 数据的读写
  151. 11.3.4 格式化输出printf 函数
  152. 11.3.5 printf 函数的简易实现
  153. 11.4 星际译王词典
  154. 11.4.1 二分法查找
  155. 11.4.2 散列表的使用
  156. 11.5 简易异常处理
  157. 11.6 Haskell中的时间
  158. 本章小结
  159. 第12章 记录器Monad、读取器Monad、状态Monad
  160. 12.1 记录器Monad
  161. 12.1.1 MonadWriter
  162. 12.1.2 记录归并排序过程
  163. 12.2 读取器Monad
  164. 12.2.1 MonadReader
  165. 12.2.2 变量环境的引用
  166. 12.3 状态Monad
  167. 12.3.1 状态Monad 标签器
  168. 12.3.2 用状态Monad 实现栈结构
  169. 12.3.3 状态Monad、FunApp单位半群和读取器Monad的关系
  170. 12.3.4 MonadState
  171. 12.3.5 基于栈的计算器
  172. 12.4 随机数的生成
  173. 本章小结
  174. 第13章 Monad转换器
  175. 13.1 从IdentityT Monad 转换器开始
  176. 13.2 Monad转换器组合与复合Monad 的区别
  177. 13.3 Monad转换器的组合顺序
  178. 13.4 lift 与liftIO
  179. 13.5 简易Monad编译器
  180. 13.6 语法分析器Monad组合子
  181. 13.6.1 简易语法分析器的实现
  182. 13.6.2 Parsec 库简介
  183. 13.6.3 上下文无关文法
  184. 13.6.4 基于语法分析器的计算器
  185. 本章小结
  186. 第14章 QuickCheck简介
  187. 14.1 测试函数属性
  188. 14.2 测试数据生成器
  189. 本章小结
  190. 第15章 惰性求值简介
  191. 15.1 λ演算简介
  192. 15.2 ⊥Bottom
  193. 15.3 表达式形态和thunk
  194. 15.3.1 WHNF、HNF 与NF
  195. 15.3.2 thunk与严格求值
  196. 15.4 求值策略
  197. 15.4.1 引值调用
  198. 15.4.2 按名调用
  199. 15.4.3 常序求值
  200. 15.5 惰性求值
  201. 15.6 严格模式匹配与惰性模式匹配
  202. 第16章 并行与并发编程
  203. 16.1 确定性的并行计算
  204. 16.2 轻量级线程
  205. 16.2.1 调度的不确定性
  206. 16.2.2 基本线程通信
  207. 16.2.3 信道
  208. 16.2.4 简易聊天服务器
  209. 16.3 软件事务内存
  210. 16.3.1 软件事务内存简介
  211. 16.3.2 软件事务内存的使用
  212. 16.3.3 哲学家就餐问题
  213. 16.3.4 圣诞老人问题
  214. 16.4 异步并发库简介
  215. 本章小结
  216. 参考文献
  217. 后记
载入中

热门划线

喜欢这本书的人也喜欢