Difference between revisions of "Beta reduction"

From HaskellWiki
Jump to: navigation, search
(x is bound in the function, cannot replace free occurrence)
 
Line 6: Line 6:
 
(\x -> 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
+
to the value <hask>7</hask>. To calculate the result, we substitute <hask>7</hask> for every occurrence of <hask>x</hask>, and so the application of the function
 
<haskell>
 
<haskell>
 
(\x -> 2*x*x + y)(7)
 
(\x -> 2*x*x + y)(7)

Latest revision as of 16:57, 6 February 2016

A beta reduction (also written β reduction) is the process of calculating a result from the application of a function to an expression.

Haskell theoretical foundations

General:
Mathematics - Category theory
Research - Curry/Howard/Lambek

Lambda calculus:
Alpha conversion - Beta reduction
Eta conversion - Lambda abstraction

Other:
Recursion - Combinatory logic
Chaitin's construction - Turing machine
Relational algebra

For example, suppose we apply the function

(\x -> 2*x*x + y)

to the value 7. To calculate the result, we substitute 7 for every occurrence of x, and so the application of the function

(\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 reduce 2*7*7 to 98. Although the lambdas are not explicit, they exist hidden in the definition of (*).)

Also see Lambda calculus and the wikipedia lambda calculus article.