Skip to main content

what is a lambda language?



I was reading "javascript good parts" author mentions that javascript is first of the lambda languages to be launched.







JavaScript's functions are first class objects with (mostly) lexical scoping. JavaScript is the first lambda language to go mainstream. Deep down, JavaScript has more in common with Lisp and Scheme than with Java. It is Lisp in C's clothing. This makes JavaScript is remarkably powerful language.







I didn't get what is a lambda language. What are the properties of such a language and how is it different from languages like java c c++ php?



Source: Tips4all

Comments

  1. I've never heard anyone use the term "lambda language," and the only plausible definitions I can think of would exclude JavaScript as "the first."

    That said, I suspect he may mean either:


    Functional languages: a class of languages in which computation is (or can be) modeled as a stateless composition of (possibly higher-order) functions. LISP, Scheme, ML, Haskell, etc. are frequently ascribed to this class, although several of these are more properly mixed paradigm or "functional optional" languages. Javascript arguably contains the necessary features to make a "functional style" of programming possible.
    Languages which allow the creation of anonymous functions (using the function syntax in JavaScript; this is written lambda in many languages, hence possibly "lambda languages."


    Both usages are derived from the use of the greek letter lambda to denote function abstraction in the lambda calculus, the model of computation devised by Alonzo Church and upon which functional programming is based.

    Edit: looked at Google Books result---"first to go mainstream"; well, that's arguable. I'd put forward that LISP was at one point at least reasonably mainstream. It's a fair point though, JavaScript's semantics are directly inspired by Scheme and it certainly reached a larger audience than any other language that can make similar claims.

    ReplyDelete
  2. A lambda language, in simple terms, is a language that allows passing a function to another function, where the function is treated as any other variable. Also, you should be able to define this function to be passed anonymously (or inline). PHP 5 added support for lambda functions. Was JavaScript the first mainstream language? Lisp has been widely used before JavaScript.

    Here's an example

    function applyOperation(a, b, operation) {
    return operation(a,b);
    }

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

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


    How is it different from C? In C, you can pass pointer to functions, but you can't define it inline anonymously.

    In java, to achieve the same effect, you must pass an object that implements an interface, which actually can be defined anonymously inline.

    ReplyDelete
  3. He refers to Lambda calculus.


    Lambda calculus, also written as λ-calculus, is a formal system for function definition, function application and recursion.
    [...]

    [...] with untyped lambda calculus being the original inspiration for functional programming, in particular Lisp, and typed lambda calculi serving as the foundation for modern type systems.

    ReplyDelete
  4. I've seen a lambda defined as an anonymous function and as a reference to a function. Javascript supports both:

    setTimeout(function(){ /* an anonymous function */ }, 100)

    var f = function(){ /* function ref */ }

    This is where JS gets a lot of its power and flexibility. Java supports the first to some extent (anonymous interface implementations), but not that latter.

    Its unclear to me which (or both) of these is the proper definition of a lambda.

    JS is definitely not the first language to support these features. Going from memory, I think its smalltalk that language enthusiasts always rave about supporting lambdas.

    BTW: In Java, an anonymous class is usually used to pass in a class definition on the fly for an argument (used a lot in swing). Something like this (from memory, not compiled):

    someGuiContainer(new WidgetInterface()
    {
    public void importantMethodToDefine(){
    // Handle having the method called in my special widget way
    }
    }
    )

    ReplyDelete
  5. From wikipedia:
    In programming languages such as Lisp and Python, lambda is an operator used to denote anonymous functions or closures, following the usage of lambda calculus. An example of this use of lambda in the Python language is this section of computer code that sorts a list alphabetically by the last character of each entry:

    >>> list = ['woman', 'man', 'horse', 'boat', 'plane', 'dog']
    >>> sorted(list, key=lambda word: word[-1])
    ['horse', 'plane', 'dog', 'woman', 'man', 'boat']

    * In the C# programming language a lambda expression is an anonymous function that can contain expressions and statements

    ReplyDelete
  6. In MIT's open course-ware called structure and interpretation of computer programs a book by Hal Abelson's, Jerry Sussman's and Julie Sussman's. They discuss Scheme, which is a dialect of LISP and there they explain a very detailed and clear explanation of what lambda is and Scheme LISP and languages in general. I highly recommend you look at it if you wish to have a really clear and deep understanding of Computer Programming. To explain to you would take three times as much time as if you went there and just read the book or watch the tutorials which explains it perfectly, it's genius.

    Javascript is mainly based off of the language Scheme and it's Lisp father, and in addition it took its lamda structure and went mainstream with it.

    ReplyDelete

Post a Comment

Popular posts from this blog

[韓日関係] 首相含む大幅な内閣改造の可能性…早ければ来月10日ごろ=韓国

div not scrolling properly with slimScroll plugin

I am using the slimScroll plugin for jQuery by Piotr Rochala Which is a great plugin for nice scrollbars on most browsers but I am stuck because I am using it for a chat box and whenever the user appends new text to the boxit does scroll using the .scrollTop() method however the plugin's scrollbar doesnt scroll with it and when the user wants to look though the chat history it will start scrolling from near the top. I have made a quick demo of my situation http://jsfiddle.net/DY9CT/2/ Does anyone know how to solve this problem?

Why does this javascript based printing cause Safari to refresh the page?

The page I am working on has a javascript function executed to print parts of the page. For some reason, printing in Safari, causes the window to somehow update. I say somehow, because it does not really refresh as in reload the page, but rather it starts the "rendering" of the page from start, i.e. scroll to top, flash animations start from 0, and so forth. The effect is reproduced by this fiddle: http://jsfiddle.net/fYmnB/ Clicking the print button and finishing or cancelling a print in Safari causes the screen to "go white" for a sec, which in my real website manifests itself as something "like" a reload. While running print button with, let's say, Firefox, just opens and closes the print dialogue without affecting the fiddle page in any way. Is there something with my way of calling the browsers print method that causes this, or how can it be explained - and preferably, avoided? P.S.: On my real site the same occurs with Chrome. In the ex