首页 > 其他 > 详细

用高阶函数做抽象

时间:2016-02-22 13:36:37      阅读:207      评论:0      收藏:0      [点我收藏+]

  我们已经看到,在作用上,过程也就是一类抽象,它们描述了一些对于数的复合操作,但又并不依赖于特定的数。例如,在定义:

  (defined (cube x)(* x x x))

时,我们讨论的并不是某个特定数值的立方,而是对任意的数到其立方的方法。当然,我们也完全可以不去定义这一过程,而总是写出下面这样的表达式:

  (* 3 3 3)

  (* x x x)

  (* y y y)

并不明确的提出cube。但是,这样做将把自己置于一个非常糟糕的境地,迫使我们永远在语言恰好提供了的那些特定基本操作(例如这里的乘法)的层面上工作,而不能基于更高级的操作去工作。我们写出的程序也能计算立方,但是所用的语言却不能表述立方这一概念。人们对功能强大的程序设计语言有一个必然要求,就是能为公共的模式命名,建立抽象,而后直接在抽象的层次上工作。过程提供了这种能力,这也是为什么除最简单的程序语言外,其他语言都包含定义过程的机制的原因。

 

  作为编程者,我们应该对这类可能性保持高度敏感,设法从中识别出程序里的基本抽象,基于它们去进一步构造,并推广它们以创建威力更加强大的抽象。当然,这并不是说总应该采用尽可能抽象的方式去写程序,程序设计专家们知道如何根据工作中的情况,去选择合适的抽象层次。但是,能基于这种抽象去思考确实是最重要的,只有这样才能在新的上下文中去应用它们。高阶过程的重要性,就在于我们能显示的用程序设计语言的要素去描述这些抽象,使我们能像操作其他计算元素一样去操作它们。

                                                   《计算机程序的构造和解释》

用高阶函数做抽象

原文:http://www.cnblogs.com/dongerlei/p/5206552.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!