关于语言不可知:什么是Lambda?

What is a Lambda?

有人能很好地描述lambda是什么吗?我们为他们准备了一个标签,他们在C问题的秘密上,但我还没有找到一个很好的定义和解释,他们首先是什么。


闭包、lambda和匿名函数不一定是相同的。

匿名函数是任何没有(或者至少需要)自己名称的函数。

闭包是一个函数,它可以在声明变量时访问其词汇范围内的变量,即使这些变量已经超出了范围。匿名函数不一定是闭包,但在大多数语言中,它们都是闭包,如果不是闭包,就变得不那么有用了。

λ是…就计算机科学而言,还不太清楚。许多语言甚至都不使用这个术语;相反,它们只会称它们为闭包或anon函数,或者发明自己的术语。在Lisp中,lambda只是一个匿名函数。在Python中,lambda是一个匿名函数,专门限于单个表达式;除此之外,还需要一个命名函数。lambda在两种语言中都是闭包。


也称为闭包或匿名函数。我在这里找到了最好的描述。基本上,可以作为参数传递给函数的内联代码块。


"lambda"指lambda微积分或特定lambda表达式。lambda微积分基本上是处理函数的逻辑和数学分支,是函数编程语言的基础。

~威廉·莱利·兰德


它只是一个内联声明的匿名函数,通常在不想编写完整的函数时分配给委托。

在像lisp/scheme这样的语言中,它们经常作为函数参数被大量传递,但是C语言中的习惯用法通常发现lambda只用于对函数的延迟评估,如在linq中,或者使事件处理代码更加简洁。


编程中并没有"lambda"这样的东西。这取决于语言等。

简而言之,通常"has lambdas"的语言使用匿名函数的术语,或者在某些情况下使用闭包。就像这样,在Ruby中:

1
2
f = lambda { return"this is a function with no name" }
puts f.call

针对之前的回答:-匿名函数最重要的不是不需要名字。-闭包是一个单独的概念。-维基百科的一篇巨文并没有使这一点更清楚。

我的答案分为三部分:1。lambda是一个函数,也是一个表达式。这是很重要的。2。许多实现所谓"lambdas"的语言都添加了一些语法糖分,以使编写这些短函数变得更容易和更快,但这不是必需的。三.某些语言可能要求lambda没有副作用。从功能上来说,这将是一个更纯粹的lambda。

当一个函数是一个表达式时,它就是语言中的"一等公民"。我可以用它做所有重要的事情:

1
2
3
4
5
6
7
x = lambda(){ return"Hello World"; }

doit( 1, 2, lambda(a,b){ return a > b; }, 3 )

x = (lambda(a){ return a+1; }) + 5  // type error, not syntax error

(lambda(a,b){ print(a); log(b); })( 1, 2 )  // () is valid operator here


摘自维基百科:http://en.wikipedia.org/wiki/lambda lambda.2c_这个词

在Lisp和python等编程语言中,lambda是一个运算符,用于在lambda微积分使用之后表示匿名函数或闭包。