1.3.1 Formulating Abstractions with Higher-Order Procedures
读了两三遍才明白Higher-Order Procedure是什么。一个固定的procedure形成了一个固定的pattern,这些patterns我们可以通过用abstraction的方法来定义这个procedure,这也就是函数的思想。
但是,一般的procedure的argument,也就是变量是数值,着很多时候会限制我们abstraction的使用。文中给了一组函数,其实就是这三个函数内部都包含了一个内在的pattern,而这个pattern中的变量是一个procedure,或者说是函数。我们依然可以对这样的一个pattern来abstraction。
之所以叫Higher-Order Procedure,其实就是对应以函数指针为参数的函数。
简单的说,我认为普通的函数是f(x1,x2,x3,x4, xn), 抽象Higher-Order Procedure的函数是f(g(x1,x2,...,xm), ..., xn);
一个例子,一个函数叫做门票价格, 门票价格 = 基础费用 + 任选景点门票价格;这是一个pattern,其中的任选景点门票价格又可以通过不同的公式来计算,比如学生门票计算,比如老人门票计算。。。不同的公式就是不同的函数,即不同的procedure。
有一个疑问,使用了函数指针为参数的函数跟模板是什么关系?
在网上看了下,发现其实没有啥关系。模板定义的是对于不同类型变量作为参数而执行的同样的procedure