【发布时间】:2011-02-25 22:47:55
【问题描述】:
我正在学习计划。我知道如何同时使用 lambda 和 let 表达式。
但是我很难弄清楚使用 lambda 的意义何在。你不能用 let 做所有你可以用 lambda 做的事情吗?
看一个 lambda 表达式比 let 更好的选择的例子会特别有帮助。
另外一件事——在某些情况下 let 比 lambda 更有用吗?如果是这样的话,这样的例子也很好。
编辑:我也对对比 define 和 lambda 感兴趣,因为它们似乎执行类似的任务。
更新:
感谢大家的帮助。阅读您的答案后,我对 lambda/let/define 做了更多研究,现在理解得更好了。
我遇到了一个很酷的 lambda 用法的极好例子——从过程中返回匿名函数。例如,下面的过程operateTwice 返回一个匿名函数,该函数基于传入过程的参数:
(define operateTwice
(lambda (op1 op2)
(lambda (x y)
(op2 (op1 x y) y))))
((operateTwice * +) 2 3) ;equivalent to: (+ (* 2 3) 3), or in standard notation 2*3+3
输出:
9
【问题讨论】: