【SICP归纳】2 高阶函数和数据抽象

本文探讨SICP中高阶函数和数据抽象的概念,通过Scheme语言阐述过程作为参数如何实现抽象,引用书中求和示例说明抽象的必要性。文章提到了函数式编程与命令式编程的区别,以及如何使用高阶函数实现如不动点搜索等复杂算法。同时,介绍了数据抽象在构建复合数据和系统层次中的作用,如Lisp中的cons操作。此外,还讨论了模块化结构和级联的概念,以及Church计数在数据抽象中的独特应用。
摘要由CSDN通过智能技术生成

上一篇博文对应的是书中的第一章的一二两节,我们已经大致的有了一种构造的感觉不是么。书中展示了很多有趣的句法(syntax)。现在我们要让思想进一步的抽象,写这篇博客的时候并未学完整本书,更不敢说对书中的内容有一个多深的领悟。但我一路学习过来,就感觉书中的示例越来越抽象,作者所引导我们的也是如此方向。博文也会持续更新下去,伴随着我的理解。

在这个专栏的【Scheme归纳】4 高阶函数中已经初步介绍了什么是高阶函数(Higher-order Procedures)。而在这一节中,将用高阶函数来做抽象。书中分了许多小节来逐一介绍这一主题。在“过程作为参数”中,书中用了许许多多的相似示例来概括起一个抽象的操作。lambda用和define同样的方式来创建过程,唯一的区别仅仅是不为过程提供参数。这就是函数式编程和命令式编程的最大区别了,在C++等语言中我们总是会定义许多的变量和常量,而在Scheme中一路下来几乎都是函数。函数与函数之间也不再是用变量等做参数,再用一个return来返回,它可以用过程来作为参数,甚至过程还可以作为返回值。

在第38页前后的各种求和中,这些程序几乎是相同的,没有太多的区别。它们都具有相同条件,相同的谓词和相同的结果,并且这些代换方式都是如此相似。如果现在仔细回想,我们至今为止已经学习了哪些语法,哪些组合,哪些抽象,还有没有学到的常见模式。作者说,计算机应让人快乐,而不是人让计算机快乐。所以人们会创建让自己更容易编写程序、更易于阅读的编程语言,因此就引进了一切抽象的东西。

至今为止一直谈论的过程,仅仅是在提醒我们关于这个语言的框架&#x

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值