# Lambda abstraction

### From HaskellWiki

(Difference between revisions)

(Somebody who knows WTF they're talking about should probably look at this...) |
m |
||

Line 1: | Line 1: | ||

A ''lambda abstraction'' is another name for an [[anonymous function]]. It gets its name from the usual notation for writing it - for example, <math>\lambda x \to x^2</math>. (Note: some sources write it as <math>\lambda x . \ x^2</math>.) |
A ''lambda abstraction'' is another name for an [[anonymous function]]. It gets its name from the usual notation for writing it - for example, <math>\lambda x \to x^2</math>. (Note: some sources write it as <math>\lambda x . \ x^2</math>.) |
||

− | In Haskell source code, the Greek letter lambda is replaced by a backslash character ('<hask>\</hask>') instead, since this is easier to type. (And requires only the basic 7-bit ASCII character set.) Similarly, the arrow is replaced with the must more ugly character sequence '<hask>-></hask>'. So, for example, the lambda abstraction above would be written in Haskell as |
+ | In Haskell source code, the Greek letter lambda is replaced by a backslash character ('<hask>\</hask>') 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 character sequence '<hask>-></hask>'. So, for example, the lambda abstraction above would be written in Haskell as |

<haskell> |
<haskell> |

## Revision as of 17:24, 3 February 2007

A *lambda abstraction* is another name for an anonymous function. It gets its name from the usual notation for writing it - for example, . (Note: some sources write it 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, - the result of the expression is determined by replacing every occurrence of the parameter variable (in this case *x*) with the parameter value (in this case 7). This is an eta reduction.