-
Notifications
You must be signed in to change notification settings - Fork 21
Haskell: The Craft of Functional Programming
- External Link:
- Douban Books: Haskell: The Craft of Functional Programming(豆瓣)
- Download Link:
- 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语法基础后,
阅读本书效果更好。
像很多好的技术书籍一样,
这本书谈技术,但很有启发性,
值得多次阅读。