读书笔记(二)-- SICP

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




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值