An anonymous function can be defined without a name through a Lambda Expression. For defining these type of functions, the keyword lambda
is used instead of the keyword defun
. The following lines are all equivalent and define anonymous functions which output the sum of two numbers:
(lambda (x y) (+ x y))
(function (lambda (x y) (+ x y)))
#'(lambda (x y) (+ x y))
Their usefulness is noticeable when creating Lambda forms, i.e. a form that is a list where the first element is the lambda expression and the remaining elements are the anonymous function's arguments. Examples (online execution):
(print ((lambda (x y) (+ x y)) 1 2)) ; >> 3
(print (mapcar (lambda (x y) (+ x y)) '(1 2 3) '(2 -5 0))) ; >> (3 -3 3)