对于一个没有计算机科学背景的人来说,计算机科学界的lambda是什么?


当前回答

在CS的上下文中,lambda函数是一个抽象的数学概念,它解决了数学表达式的符号求值问题。在这种情况下,lambda函数与lambda项相同。

但在编程语言中,这是不同的。这是一段被宣布为“到位”的代码,可以作为“一流公民”传递。这个概念似乎很有用,因此它几乎进入了所有流行的现代编程语言(参见lambda函数everwhere post)。

其他回答

Ruby中lambda的示例如下:

hello = lambda do
    puts('Hello')
    puts('I am inside a proc')
end

hello.call

将生成以下输出:

Hello
I am inside a proc

lambda函数可以接受任意数量的参数,但它们只包含一个表达式。。。Lambda函数可用于返回函数对象。语法上,lambda函数仅限于一个表达式。

我喜欢这篇文章中对Lambdas的解释:LINQ的演变及其对C#设计的影响。这对我来说很有意义,因为它为Lambdas展示了一个真实的世界,并将其作为一个实际的例子。

他们的快速解释:Lambdas是将代码(函数)视为数据的一种方式。

它是一个没有名称的函数。例如,在c#中,您可以使用

numberCollection.GetMatchingItems<int>(number => number > 5);

返回大于5的数字。

number => number > 5

这里是lambda部分。它表示一个接受参数(数字)并返回布尔值(数字>5)的函数。GetMatchingItems方法对集合中的所有项使用此lambda并返回匹配项。

这个问题已经得到了充分的回答,我不想详述。我想分享在rust中编写数值计算时的用法。

有一个lambda(匿名函数)的示例

let f = |x: f32| -> f32 { x * x - 2.0 };
let df = |x: f32| -> f32 { 2.0 * x };

当我写牛顿-拉斐逊方法的一个模块时,它被用作一阶导数和二阶导数。(如果您想知道什么是牛顿-拉斐逊法,请访问“https://en.wikipedia.org/wiki/Newton%27s_method".

输出如下

println!("f={:.6}      df={:.6}", f(10.0), df(10.0))

f=98.000000       df=20.000000