首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是lambda语言?

什么是lambda语言?
EN

Stack Overflow用户
提问于 2010-10-05 23:45:21
回答 6查看 27.8K关注 0票数 91

我正在读" JavaScript : The Good Parts“,作者提到JavaScript是第一个推出的lambda语言。

JavaScript的函数是具有(主要)词法作用域的第一类对象。JavaScript是第一个成为主流的lambda语言。在本质上,JavaScript与Lisp和Scheme的共同点多于与Java的共同点。这就是穿着C的Lisp。这使得JavaScript成为一种非常强大的语言。

我不明白什么是lambda语言。这种语言的特性是什么?它与Java、C、C++和PHP语言有什么不同?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-10-05 23:50:19

我从来没有听说过有人使用"lambda语言“这个术语,而且我能想到的唯一合理的定义是将JavaScript排除在”第一个“之外。

也就是说,我怀疑他的意思可能是:

  • Functional languages:一类语言,其中计算被(或可以被)建模为(可能是更高阶的)函数的无状态组合。LISP、Scheme、ML、Haskell等经常被归因于此类,尽管其中一些是更恰当的混合范例或“函数式可选”语言。可以说,Javascript包含了一些必要的特性,可以创建一种“函数式”的编程possible.
  • Languages,它允许创建匿名函数(使用JavaScript中的function语法;这在许多语言中都是用lambda编写的,因此可能是"lambda语言“。

这两种用法都是从使用希腊字母lambda来表示lambda演算中的函数抽象而来的,lambda演算是阿隆佐·丘奇设计的计算模型,函数式编程基于该模型。

编辑:看了Google Books的结果-“第一个成为主流”;好吧,这是有争议的。我提出,LISP在某种程度上至少是相当主流的。虽然这是一个公平的观点,但JavaScript的语义直接受到Scheme的启发,它肯定比任何其他可以提出类似声明的语言都拥有更多的受众。

票数 40
EN

Stack Overflow用户

发布于 2010-10-06 01:22:42

简而言之,lambda语言是一种允许将函数传递给另一个函数的语言,其中该函数被视为任何其他变量。此外,您应该能够将此函数定义为匿名传递(或内联传递)。PHP 5.3添加了对lambda函数的支持。JavaScript是第一种主流语言吗?在JavaScript出现之前,Lisp已被广泛应用于教育设置中,也被用于定制我们心爱的Emacs http://www.gnu.org/software/emacs/manual/html_node/eintr/

下面是一个例子

代码语言:javascript
复制
function applyOperation(a, b, operation) {
  return operation(a,b);
}

function add(a,b) { return a+ b; }
function subtract(a,b) {return a - b;}

// Can be called like
applyOperation(1,2, add);
applyOperation(4,5, subtract);
// Anonymous inline function
applyOperation(4,7, function(a,b) {return a * b})

它与C有什么不同?在C中,你可以把指针传递给函数,但是你不能匿名的内联定义它。

在Java (版本8之前)中,要达到同样的效果,必须传递一个实现接口的对象,该接口实际上可以匿名内联定义。

票数 48
EN

Stack Overflow用户

发布于 2010-10-06 00:43:55

他指的是Lambda calculus

演算又称λ演算,是一个用于函数定义、函数应用和递归的形式化系统。..。无类型的lambda演算是函数式编程的原始灵感,特别是Lisp,类型的lambda演算是现代类型系统的基础。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3865335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档