Personal tools

Lambda abstraction

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(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, \lambda x \to x^2. (Note: some sources write it as \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 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 occurrence of the parameter variable (in this case x) with the parameter value (in this case 7). This is an eta reduction.