什么是lambda语言?

我正在阅读“JavaScript:The Good Parts”,作者提到JavaScript是第一批要发布的lambda语言。

JavaScript的函数是带有(主要)词法作用域的第一类对象。 JavaScript是第一个成为主流的lambda语言 。 在深层次方面,JavaScript与Lisp和Scheme比Java更有共同之处。 它是C的服装中的Lisp。 这使JavaScript成为非常强大的语言。

我没有得到什么是lambda语言。 这种语言的属性是什么,它与Java,C,C ++和Php等语言有什么不同?


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

这就是说,我怀疑他可能意味着:

  • 函数式语言:计算(或可以)作为(可能是更高阶)函数的无状态组成的一类语言。 LISP,Scheme,ML,Haskell等经常被归入这个类,尽管其中有些是更恰当的混合范式或“功能可选”语言。 Javascript可以说包含了使编程的“功能风格”成为可能的必要特性。
  • 允许创建匿名函数的语言(在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

    上一篇: What is a lambda language?

    下一篇: How do I learn about "closures" usage?