GNU Info

Info Node: (emacs-lisp-intro.info)lambda

(emacs-lisp-intro.info)lambda


Next: mapcar Prev: Graphing words in defuns Up: Print Whole Graph
Enter node , (file) or (file)node

A `lambda' Expression: Useful Anonymity
---------------------------------------

   `lambda' is the symbol for an anonymous function, a function without
a name.  Every time you use an anonymous function, you need to include
its whole body.

Thus,

     (lambda (arg) (/ arg 50))

is a function definition that says `return the value resulting from
dividing whatever is passed to me as `arg' by 50'.

   Earlier, for example, we had a function `multiply-by-seven'; it
multiplied its argument by 7.  This function is similar, except it
divides its argument by 50; and, it has no name.  The anonymous
equivalent of `multiply-by-seven' is:

     (lambda (number) (* 7 number))

(Note: The `defun' Special Form.)

If we want to multiply 3 by 7, we can write:

     (multiply-by-seven 3)
      \_______________/ ^
              |         |
           function  argument




This expression returns 21.

Similarly, we can write:

     ((lambda (number) (* 7 number)) 3)
      \____________________________/ ^
                    |                |
           anonymous function     argument




If we want to divide 100 by 50, we can write:

     ((lambda (arg) (/ arg 50)) 100)
      \______________________/  \_/
                  |              |
         anonymous function   argument




This expression returns 2.  The 100 is passed to the function, which
divides that number by 50.

   Note: Lambda Expressions, for more about
`lambda'.  Lisp and lambda expressions derive from the Lambda Calculus.


automatically generated by info2www version 1.2.2.9