Anonymous function
From HaskellWiki
(Difference between revisions)
(HaWiki conversion) |
(links) |
||
| Line 43: | Line 43: | ||
addOneList' lst = map (\x -> x + 1) lst | addOneList' lst = map (\x -> x + 1) lst | ||
</haskell> | </haskell> | ||
| - | For completeness it's worth mentioning that this could be better written: | + | |
| + | For completeness it's worth mentioning that this could be better written | ||
| + | using a [[Section]], in [[Pointfree]] style: | ||
<haskell> | <haskell> | ||
Revision as of 04:23, 20 October 2006
\x -> x + 1
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.
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)
3 See also
- Section 3.1 in the Haskell tutorial.
- Closure
- Lambda calculus
