上一篇博文对应的是书中的第一章的一二两节,我们已经大致的有了一种构造的感觉不是么。书中展示了很多有趣的句法(syntax)。现在我们要让思想进一步的抽象,写这篇博客的时候并未学完整本书,更不敢说对书中的内容有一个多深的领悟。但我一路学习过来,就感觉书中的示例越来越抽象,作者所引导我们的也是如此方向。博文也会持续更新下去,伴随着我的理解。
在这个专栏的【Scheme归纳】4 高阶函数中已经初步介绍了什么是高阶函数(Higher-order Procedures)。而在这一节中,将用高阶函数来做抽象。书中分了许多小节来逐一介绍这一主题。在“过程作为参数”中,书中用了许许多多的相似示例来概括起一个抽象的操作。lambda用和define同样的方式来创建过程,唯一的区别仅仅是不为过程提供参数。这就是函数式编程和命令式编程的最大区别了,在C++等语言中我们总是会定义许多的变量和常量,而在Scheme中一路下来几乎都是函数。函数与函数之间也不再是用变量等做参数,再用一个return来返回,它可以用过程来作为参数,甚至过程还可以作为返回值。
在第38页前后的各种求和中,这些程序几乎是相同的,没有太多的区别。它们都具有相同条件,相同的谓词和相同的结果,并且这些代换方式都是如此相似。如果现在仔细回想,我们至今为止已经学习了哪些语法,哪些组合,哪些抽象,还有没有学到的常见模式。作者说,计算机应让人快乐,而不是人让计算机快乐。所以人们会创建让自己更容易编写程序、更易于阅读的编程语言,因此就引进了一切抽象的东西。
至今为止一直谈论的过程,仅仅是在提醒我们关于这个语言的框架&#x