Personal tools

Lambda abstraction

From HaskellWiki

Revision as of 18:08, 3 February 2007 by Nedervold (Talk | contribs)

Jump to: navigation, search

A lambda abstraction is another name for an anonymous function. It gets its name from the usual notation for writing it: for example, \lambda x \to x^2. (Another common but equivalent notation is: \lambda x . \ x^2.)

In Haskell source code, the Greek letter lambda is replaced by a backslash character ('
\
') instead, since this is easier to type and requires only the basic 7-bit ASCII character set. Similarly, the arrow is replaced with the much more ugly (but strictly ASCII) character sequence '
->
'. So, for example, the lambda abstraction above would be written in Haskell as
  \ x -> x * x

There is actually a whole mathematical theory devoted to expressing computation entirely using lambda abstractions: the lambda calculus. Most functional programming languages (including Haskell) are based upon some extension of this idea.

When a lambda abstraction is applied to a value—for instance, (\lambda x \to x^2 ) \ 7—the result of the expression is determined by replacing every free occurrence of the parameter variable (in this case x) with the parameter value (in this case 7). This is a beta reduction.