什么是lambda语言?
我正在阅读“JavaScript:The Good Parts”,作者提到JavaScript是第一批要发布的lambda语言。
JavaScript的函数是带有(主要)词法作用域的第一类对象。 JavaScript是第一个成为主流的lambda语言 。 在深层次方面,JavaScript与Lisp和Scheme比Java更有共同之处。 它是C的服装中的Lisp。 这使JavaScript成为非常强大的语言。
我没有得到什么是lambda语言。 这种语言的属性是什么,它与Java,C,C ++和Php等语言有什么不同?
我从来没有听说过任何人使用“lambda语言”这个术语,我能想到的唯一合理的定义是将JavaScript排除在外。
这就是说,我怀疑他可能意味着:
function
语法;这是在许多语言中编写的lambda
,因此可能是“lambda语言”。 这两种用法都源于使用希腊字母lambda表示lambda演算中的函数抽象,由Alonzo Church设计的计算模型以及函数式编程所依据的函数抽象。
编辑:看着谷歌图书的结果---“首先要走主流”; 好吧,这是有争议的。 我提出LISP至少在一个点上是合理的主流。 尽管这是一个公平点,JavaScript的语义直接受到了Scheme的启发,并且它比任何其他可以提出类似请求的语言都能获得更多的受众。
简而言之,lambda语言是一种允许将函数传递给另一个函数的语言,该函数被视为任何其他变量。 此外,您应该能够定义此功能以匿名(或内联)方式传递。 PHP 5.3增加了对lambda函数的支持。 JavaScript是第一种主流语言吗? 在JavaScript之前,Lisp已被广泛用于教育环境,并且还定制了我们心爱的Emacs http://www.gnu.org/software/emacs/manual/html_node/eintr/
这是一个例子
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之前),为了达到相同的效果,您必须传递一个实现了接口的对象,实际上它可以以匿名方式内联定义。
他提到了Lambda微积分。
Lambda演算也写成λ演算,是一个用于函数定义,函数应用和递归的形式化系统。 [...]
无类型lambda演算是函数式编程的最初灵感,特别是Lisp,以及用作现代类型系统基础的键入lambda calculi。
链接地址: http://www.djcxy.com/p/51265.html