# Anonymous function

### From HaskellWiki

(Difference between revisions)

BrettGiles (Talk | contribs) m (caps - minor rewording) |
(Fixed the Haskell tutorial link) |
||

Line 52: | Line 52: | ||

==See also== |
==See also== |
||

− | * Section 3.1 in the [http://haskell.cs.yale.edu/tutorial/functions.html Haskell tutorial]. |
+ | * Section 3.1 in the [http://www.haskell.org/tutorial/functions.html Haskell tutorial]. |

* [[Closure]] |
* [[Closure]] |
||

* [[Lambda calculus]] |
* [[Lambda calculus]] |

## Latest revision as of 22:24, 21 December 2011

\x -> x + 1

## [edit] 1 Examples

That is a nameless function which increments its parameter, x. So in Hugs or GHCi, I might say:

Prompt> (\x -> x + 1) 4 5 :: Integer

Or I could make a nameless function of two parameters, x and y:

\x y -> x + y

Prompt> (\x y -> x + y) 3 5 8 :: Integer

You could also name a lambda expression if you wanted to for some reason:

addOne = \x -> x + 1

Of course, there are a variety of better ways to write that in Haskell, but you get the idea.

## [edit] 2 But why bother?

Sometimes it is more convenient to use a lambda expression rather than giving a function a name. This is often the case when usingmap

foldl / foldr

addOneList lst = map addOne' lst where addOne' x = x + 1

But here's another way, where we pass the anonymous function into map rather than any named function.

addOneList' lst = map (\x -> x + 1) lst

For completeness it's worth mentioning that this could be better written using a section, in pointfree style:

addOneList'' = map (+1)

## [edit] 3 See also

- Section 3.1 in the Haskell tutorial.
- Closure
- Lambda calculus
- Beta reduction