Eta reduction
The third feature that Haskell has borrowed from the lambda calculus is eta reduction. Eta reduction is named after the Greek letter eta, written as η. It allows us to shorten function definitions of a particular form. Its inverse is known as eta expansion, and collectively, they are known as eta conversion.
Basic eta reduction
We will illustrate the idea using a basic anonymous function:
\x -> sin x
This function takes a parameter, x
, and computes its sine by calling the sin
function on it. The observation that eta reduction makes is that this anonymous function behaves in exactly the same way as the sin
function itself; both functions produce the same output given the same input. In other words, this anonymous function is indistinguishable from sin
and, therefore, equal to it. For example, consider the following:
map (\x -> sin x) [1.0, 2.0, 3.0]
We can rewrite that as the following:
map sin [1.0, 2.0, 3.0]
This idea also works at the...