Beta reduction
From HaskellWiki
(Difference between revisions)
(I think my example actually included an eta-reduction as well as a beta conversion. Edited example.) |
|||
| (One intermediate revision not shown.) | |||
| Line 1: | Line 1: | ||
| - | A ''beta reduction'' (also written ''β reduction'') is | + | A ''beta reduction'' (also written ''β reduction'') is the process of calculating a result from the application of a function to an expression. |
| - | For example, suppose we | + | {{Foundations infobox}} |
| + | For example, suppose we apply the function | ||
<haskell> | <haskell> | ||
| - | 2*x*x + y | + | (\x -> 2*x*x + y) |
</haskell> | </haskell> | ||
| - | + | to the value <hask>7</hask>. To calculate the result, we substitute <hask>7</hask> for every [[Free variable|free occurrence]] of <hask>x</hask>, and so the application of the function | |
| + | <haskell> | ||
| + | (\x -> 2*x*x + y)(7) | ||
| + | </haskell> | ||
| + | is ''reduced'' to the result | ||
<haskell> | <haskell> | ||
2*7*7 + y | 2*7*7 + y | ||
</haskell> | </haskell> | ||
| - | + | This is a ''beta reduction''. | |
| + | |||
| + | (Further reductions could be applied to reduce <hask>2*7*7</hask> to <hask>98</hask>. Although the lambdas are not explicit, they exist hidden in the definition of <hask>(*)</hask>.) | ||
Also see [[Lambda calculus]] and the [http://en.wikipedia.org/wiki/Lambda_calculus wikipedia lambda calculus article]. | Also see [[Lambda calculus]] and the [http://en.wikipedia.org/wiki/Lambda_calculus wikipedia lambda calculus article]. | ||
[[Category:Glossary]] | [[Category:Glossary]] | ||
Current revision
A beta reduction (also written β reduction) is the process of calculating a result from the application of a function to an expression.
For example, suppose we apply the function
(\x -> 2*x*x + y)
7
7
x
(\x -> 2*x*x + y)(7)
is reduced to the result
2*7*7 + y
This is a beta reduction.
(Further reductions could be applied to reduce2*7*7
98
(*)
Also see Lambda calculus and the wikipedia lambda calculus article.
