1.3 Formulating Abstractions with Higher-Order Procedures
教材有时候按照学生的基础,从0讲起;有时候给出一个大图,然后详细地逐一介绍。
本文或同学们写学习笔记时,要按照后者进行归纳。
函数,是对一些数的复合操作,而且不依赖特定的数。如
(define (cube x) (* x x x))
它不针对某个数如3,而是对所有的参数数据求其立方。由此,它是对
(* 5 5 5)
(* x x x) ; 这里x为实参
的抽象,而(* 5 5 5)等则编写为函数的应用( cube 5)。
注意,函数cube只是将数作为参数。如果能够将函数作为另一个函数的参数,会是一种什么场面呢?
函数是第一阶元素
编程语言通常会对其元素的使用方式,做出一些限制。而受到的限制最少的元素属于第一阶(first-class)。第一阶元素拥有的特权包括:
用变量命名
作为函数的参数
由函数返回