【问题标题】:Lambda Expressions vs Procedural-styled FunctionsLambda 表达式与过程式函数
【发布时间】:2014-10-29 19:27:49
【问题描述】:

我只是不明白 lambda 表达式的威力。

Python

def sum(x, y):
    return x + y

方案

(lambda (x y) (+ x y))

除了没有给出正式名称的 lambda 表达式之外,为什么一个与另一个如此不同?看起来你可以用任何一种方法做同样的事情,那为什么我的老师在 lambda 演算上这么高?

【问题讨论】:

  • Lambda 可以是一个无名的快速丢弃函数,所以如果你只使用一次函数,这可能就是使用 lambda 的原因

标签: function lambda functional-programming procedural


【解决方案1】:

直观地说,当我们比较两种工具时,我们会考虑其中一种工具能实现哪些功能而另一种不能,这样我们就可以了解一种工具的优势,但在这种特殊情况下,两种工具(程序性和功能性)都是就您可以使用它们实现的功能而言,即您可以执行的计算等价。

上述情况是人们在开始学习函数式编程时感到困惑的原因,因为他们开始比较一种方法可以实现的功能和另一种方法无法实现的功能。

现在,如果您面临有 2 台工具的情况,假设有 2 台洗衣机(假设一台来自 A 星球,另一台来自 B 星球),并且它们使用不同的洗涤剂实现相同的洗涤质量,您会如何处理比较它们并找出差异?唯一可能的区分方法是它们如何达到结果,即拆开洗衣机并开始查看它们的内部以弄清楚它们是如何达到结果的,这将导致您得出结论“两次洗涤之间的区别机器是原始组件(螺母、螺栓、电路等)以及它们如何组合/连接在一起以实现结果在两种机器中都不同”。

根据上述观察,您可以说 - lambda 演算和过程方法具有不同的基元,并且它们具有不同的方法来组合/附加这些基元以执行所需的计算。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多