我对高阶函数的理解

发布于 2022-08-18 10:41:26 字数 928 浏览 14 评论 9

举个例子:假设存在存款、取款和转账3种银行业务,每一种都需要认证和事务控制,可以尝试去抽象一个“银行业务”的框架,认证和事务控制在框架内进行,然后在框架上附加具体的业务逻辑。

  1. (define (银行业务 业务逻辑)
  2.   (lambda ( . args)
  3.     (if (not (认证))
  4.         '认证失败
  5.         (begin
  6.           (开始事务)
  7.           (let ((return (apply 业务逻辑 args)))
  8.             (结束事务)
  9.             return)))))
  10. (define 存款 (银行业务 (lambda (账户 金额) (存款业务逻辑))))
  11. (define 取款 (银行业务 (lambda (账户 金额) (取款业务逻辑))))
  12. (define 转账 (银行业务 (lambda (账户甲 账户乙 金额) (转账业务逻辑))))
  13. (存款 账户甲 3000)
  14. (取款 账户甲 200)
  15. (转账 账户甲 账户乙 1000)

复制代码
[ 本帖最后由 x2 于 2009-2-17 15:02 编辑 ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

染柒℉ 2022-08-20 23:29:44

高阶函数不就是函数的函数吗

七分※倦醒 2022-08-20 23:29:40

其实我是想从Design Pattern中的Template Pattern的角度来理解高阶函数,这也是为什么不举偏向学术性的例子的原因。

阳光下的泡沫是彩色的 2022-08-20 23:29:40

主要还是函数本身

指尖微凉心微凉 2022-08-20 23:29:39

避免写重复代码是一般函数的性质, 相信在很多入门的编程书里都有这样的介诏; 高阶函数也是函数, 当然也有这样的性质.

高阶函数这所以"高阶", 在于它能把函数当数据, 接受函数作参数, 返回函数作结果. 例如: 某高阶函数, 接受参数f(x), 计算其导函数f'(x)并作结果返回.

允世 2022-08-20 23:29:33

原帖由 chenzengjie 于 2009-2-16 19:06 发表
高价函数提供了一种避免写重复代码的方法。

这句话不是用来说明“高价”的, 只是用来说明“函数”的。

本人的表达能力实在有限。

鱼忆七猫命九 2022-08-20 23:29:31

原帖由 flw 于 2009-2-17 10:26 发表
貌似正确的拼写应该是【高阶函数】而不是【高价函数】?

晕,太大意

[ 本帖最后由 x2 于 2009-2-17 15:07 编辑 ]

瀞厅☆埖开 2022-08-20 23:16:28

貌似正确的拼写应该是【高函数】而不是【高函数】?

各空 2022-08-20 22:52:48

高价函数提供了一种避免写重复代码的方法。

这句话不是用来说明“高价”的, 只是用来说明“函数”的。

初与友歌 2022-08-20 19:16:58

高价函数,奢侈品。高端的,用不起。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文