lambda是一种高阶函数吗?

Mar*_*oni 12 lambda higher-order-functions

我在其中一个职位发布中看到了这个问题,并且询问了什么是lambda函数以及它与高阶函数的关系.我已经知道如何使用lambda函数但不太自信解释它所以我做了一点google搜索并发现:什么是lambda(函数)?这个http://en.wikipedia.org/wiki/Higher-order_function

HOF的定义说至少应该采用一个或多个函数或返回一个函数,这适合于lambda是什么,所以我的问题是......是一种lambda是一种HOF?

或者任何可以进一步解释他们关系的人?

sep*_*p2k 19

HOF的定义表示至少应该采用一个或多个函数或返回一个函数,这适用于lambda是什么

可以?(lambda (x) (x+1))(或者x => x+1,\x -> x+1或者fun x -> x+1,取决于你的语言的语法)是一个lambda.但是它既不需要函数作为参数(它需要一个int),也不会返回一个函数.

所以不,lambda不一定是高阶函数,尽管它们可以.

lambda是一个匿名函数.因此它是一种功能.但它只是一个高阶函数,如果它接受或返回一个函数,大多数lambdas都没有.然而,lambdas最常用作更高函数的参数(即如果你Where(s => s.Length > 5) Where是高阶函数并且s => s.Length > 5是(一阶)lambda),那么它们是相关的.


Ste*_*n C 5

这取决于你对"lambda"的意思.

您链接到的维基百科页面中的以下段落从类型理论的角度清楚地描述了这种关系.

"在无类型的lambda演算中,所有函数都是高阶的;在类型化的lambda演算中,大多数函数式编程语言都是从这个演算中导出的,高阶函数通常是那些类型包含多个箭头的函数.在函数式编程中,更高级 - 返回其他功能的订单功能据说是咖喱."

换句话说,在类型理论术语中,函数(lambda)在无类型lambda演算中始终是高阶的,并且在类型化的lambda演算中可能是更高阶的...取决于其类型特征.

如果我们谈论的是由某些编程语言实现的"lambda"结构,那么它取决于1)您正在谈论的实际语言,以及2)特定语言中的特定用法.

在lambda是匿名的第一类函数的语言中,你会期望它们能够表达高阶函数.但是高阶函数是一个函数,它将其他函数作为参数和/或将它们作为结果返回.并非所有在应用程序中使用"lambda"都会这样做.