|
Archive:
Subtopics:
Comments disabled |
Tue, 03 Jan 2012
Eta-reduction in Haskell and English
Katara objected that this was a completely unhelpful explanation, but I disagreed. I would have agreed that it was an excessively verbose explanation, but she didn't argue that point. Later, it occurred to me that Haskell has a syntax for eliding unnecessary variables in cases like this. In Haskell, one can abbreviate the expression
λx → λy → x + y
to just (+). (Perl users may find it helpful to know that
the Perl equivalent of the expression above is sub { my ($x) = @_;
return sub { my ($y) = @_; return $x + $y } }.) This is an
example of a general transformation called η-reduction. In general, for
any function f, λx → f x is a
function that takes an argument x and returns f x. But
that's exactly what f does. So we can replace the longer
version with the shorter version, and that's η-reduction, or we can go the
other way, which is η-expansion.Anyway, once I thought of this it occurred to me that, just like the longer expression could be reduced to (+), my original explanation that the small green part was "a thing for connecting a thing to another thing" could be η-reduced to "a connector". Perhaps if I had said that in the first place Katara would not have complained. Happy new year, all readers.
[Other articles in category /lang] permanent link |