Difference between revisions of "Eta conversion"

From HaskellWiki
Jump to navigation Jump to search
(This is a stub.)
 
(aka eta expansion)
 
(7 intermediate revisions by 6 users not shown)
Line 1: Line 1:
  +
{{Foundations infobox}}
An ''eta conversion'' (also written ''η conversion'') is… Wait, what '''is''' an eta conversion? I've forgetten! [[User:MathematicalOrchid|MathematicalOrchid]] 16:51, 29 January 2007 (UTC)
 
  +
An ''eta conversion'' (also written ''&eta;-conversion'') is adding or dropping of abstraction over a function. For example, the following two values are equivalent under &eta;-conversion: <haskell>\x -> abs x
  +
</haskell>and <haskell>abs</haskell>
  +
Converting from the first to the second would constitute an eta ''reduction'', and moving from the second to the first would be an eta ''abstraction'' (also known as eta ''expansion''). The term 'eta conversion' can refer to the process in either direction.
  +
  +
Extensive use of &eta;-reduction can lead to [[Pointfree]] programming. It is also typically used in certain compile-time optimisations.
  +
  +
== See also ==
  +
  +
* Haskell-Cafe on [http://www.haskell.org/pipermail/haskell-cafe/2010-December/087782.html What's the motivation for η rules?]
   
 
[[Category:Glossary]]
 
[[Category:Glossary]]

Latest revision as of 18:06, 15 February 2021

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

An eta conversion (also written η-conversion) is adding or dropping of abstraction over a function. For example, the following two values are equivalent under η-conversion:

\x -> abs x
and
abs

Converting from the first to the second would constitute an eta reduction, and moving from the second to the first would be an eta abstraction (also known as eta expansion). The term 'eta conversion' can refer to the process in either direction.

Extensive use of η-reduction can lead to Pointfree programming. It is also typically used in certain compile-time optimisations.

See also