Skip to content

Haskell: The Craft of Functional Programming

thzt edited this page Jun 29, 2015 · 1 revision

Book Information

Review by [thzt]

  • Rank: ★★★★
  • Hard: ★
  • Tag: 函数,高阶函数,递归,归纳法,Haskell,Programming,多态与重载,惰性求值,抽象数据类型
  • Reviews:

本来以为这是一本通过Haskell来介绍函数式编程的书,

可惜,越看越不像,

它原来是一本介绍如何使用Haskell进行函数式编程的书。


编程的概念和技术是不同的。

本书写了很多编程的套路和最佳实践。

阅读本书,可以对Haskell有更深的了解,

可以用它玩的更好。


本书深入浅出,

不怕浪费纸张,只为了把问题讲明白。

包括,一开始用图形化的方法介绍函数,

这样函数的组合,Currying,都非常明显了。


另外,对于程序正确性证明,也贯穿始终,

让我们能从更高的角度理解递归和数学归纳法。


为什么说视角比较高呢?

因为第四章用了一章来介绍,

如何处理一个一般的问题,

包括思考问题的各个步骤。


后面介绍数据类型的时候,也是如此,

用Haskell作为强大的工具,聚焦于如何处理问题,

而不是工具本身,

让我想起了一本用Haskell写的《算法》。


然后,归纳了一些常用的模式,

例如,如何处理列表,等等,

这样才是介绍高阶函数的最佳方式,

任何概念都不是凭空出现的。


还是那句话,

本书介绍如何用Haskell编程。


然后,开始介绍了Haskell的重载机制,

深入到类型类,以及类型推导中,

介绍了多态类型。


当这些基本的知识点都覆盖到后,

就着手介绍了数据类型了,

代数数据类型,抽象数据类型,

这两个概念,

从面向对象阵营过来的人,总是容易混淆。


最后,深入学习了,

Haskell的惰性求值,IO,

末尾分析了一下时空复杂度。


本书没有涉及太多的数学,

介绍函数式编程时,并没有提及lambda演算,类型系统,

介绍惰性时,也没有提及non-strict semantics或Weak head normal form。

但依然说的很清楚明白,毕竟不是所有人都需要形式化的定义来理解问题。


书中主要以语言的使用者出发,

分析语言特性引入的原因,

以及怎样用恰当的方法解决问题。


当有了一些Haskell语法基础后,

阅读本书效果更好。


像很多好的技术书籍一样,

这本书谈技术,但很有启发性,

值得多次阅读。

Clone this wiki locally