gpt4 book ai didi

language-agnostic - Lambda 函数的理论基础

转载 作者:行者123 更新时间:2023-12-01 07:16:35 26 4
gpt4 key购买 nike

我只是想知道在哪里可以找到一些与语言无关的教程,了解 lambda 函数是什么,它们的用途是什么,以及不支持它们的语言中的粗略等价物。

我特别喜欢有关常用符号的任何信息。

谢谢!请让我知道我是否可以详细说明这一点。

编辑:哦,嘿,我忘记了一些事情。

就术语而言,lambda 表达式或函数、匿名/委托(delegate)函数和闭包之间有什么区别?

最佳答案

Just in terms of terminology, what's the difference between a lambda expression or function, an anonymous/delegate function, and a closure?



关于术语:
  • lambda 表达式是 Alonzo Church 发明的用于 lambda 演算的匿名函数的原始编写方式。在 lambda 演算中,所有函数都是纯函数:没有任何副作用。

    McCarthy 为 LISP 采用了 lambda 表达式为 (lambda (arguments ...) body)。 ,拼写为“lambda”。 Sussman 和 Steele 后来使语义更加忠实于 Church 的原文。该表达式也被 Haskell 采用为 \ arguments ... -> body , 和反斜杠看起来像一个 lambda,但 Haskell 委员会使用右箭头而不是点,因为他们想要函数组合的点。 Robin Milner 为 ML 采用了该表达式,但拼写更加奇怪:fn args => body .所有这些表达式都被恰本地称为 lambda 表达式,并且都表示匿名函数。只有 Haskell 中的函数是纯函数; Lisp、ML 和 Scheme 都允许 body有副作用。
  • 闭包是您在评估 lambda 表达式或其他类型的嵌套函数时得到的。闭包不仅包含 lambda 表达式的编译代码,还包含有关自由变量的信息。 (在 Lisp 和 Scheme 中,闭包存储自由变量的位置;在 Haskell 和 ML 中,闭包存储自由变量的值。)
  • 匿名函数是一个更一般的概念,不必局限于简单的绑定(bind)和主体。例如,在 Smalltalk 中,一个“ block ”代表一个匿名函数,但 block 的主体是一系列语句,因此它绝对不同于 lambda 表达式。

  • 恐怕我无法帮助您处理“委托(delegate)功能”;在我的世界里,这个词完全用来描述其他东西。

    关于language-agnostic - Lambda 函数的理论基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1987672/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com