# Lambda abstraction

### From HaskellWiki

(Difference between revisions)

m |
(eta -> beta plus minor changes) |
||

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 | + | 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>. (Another common but equivalent notation is: <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 | + | 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 (but strictly ASCII) character sequence '<hask>-></hask>'. So, for example, the lambda abstraction above would be written in Haskell as |

<haskell> | <haskell> | ||

Line 7: | Line 7: | ||

</haskell> | </haskell> | ||

− | There is actually a whole mathematical theory devoted to expressing computation entirely using lambda abstractions | + | 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 | + | When a lambda abstraction is applied to a value—for instance, <math>(\lambda x \to x^2 ) \ 7</math>—the result of the expression is determined by replacing every [[free variable|free occurrence]] of the parameter variable (in this case <math>x</math>) with the parameter value (in this case <math>7</math>). This is a [[Beta reduction|beta reduction]]. |

## Revision as of 18:08, 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, . (Another common but equivalent notation is: .)

\

->

\ 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 free occurrence of the parameter variable (in this case *x*) with the parameter value (in this case 7). This is a beta reduction.