我对高阶函数的理解
举个例子:假设存在存款、取款和转账3种银行业务,每一种都需要认证和事务控制,可以尝试去抽象一个“银行业务”的框架,认证和事务控制在框架内进行,然后在框架上附加具体的业务逻辑。
- (define (银行业务 业务逻辑)
- (lambda ( . args)
- (if (not (认证))
- '认证失败
- (begin
- (开始事务)
- (let ((return (apply 业务逻辑 args)))
- (结束事务)
- return)))))
- (define 存款 (银行业务 (lambda (账户 金额) (存款业务逻辑))))
- (define 取款 (银行业务 (lambda (账户 金额) (取款业务逻辑))))
- (define 转账 (银行业务 (lambda (账户甲 账户乙 金额) (转账业务逻辑))))
- (存款 账户甲 3000)
- (取款 账户甲 200)
- (转账 账户甲 账户乙 1000)
复制代码
[ 本帖最后由 x2 于 2009-2-17 15:02 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
高阶函数不就是函数的函数吗
其实我是想从Design Pattern中的Template Pattern的角度来理解高阶函数,这也是为什么不举偏向学术性的例子的原因。
主要还是函数本身
避免写重复代码是一般函数的性质, 相信在很多入门的编程书里都有这样的介诏; 高阶函数也是函数, 当然也有这样的性质.
高阶函数这所以"高阶", 在于它能把函数当数据, 接受函数作参数, 返回函数作结果. 例如: 某高阶函数, 接受参数f(x), 计算其导函数f'(x)并作结果返回.
本人的表达能力实在有限。
晕,太大意
[ 本帖最后由 x2 于 2009-2-17 15:07 编辑 ]
貌似正确的拼写应该是【高阶函数】而不是【高价函数】?
高价函数提供了一种避免写重复代码的方法。
这句话不是用来说明“高价”的, 只是用来说明“函数”的。
高价函数,奢侈品。高端的,用不起。