Eta reduction is turning x -> f x
into f
as long as f
doesn't have a free occurence of x
.
To check that they're the same, apply them to some value y
:
(x -> f x) y === f' y -- (where f' is obtained from f by substituting all x's by y)
=== f y -- since f has no free occurrences of x
Your definition of haqify
is seen as s -> "Haq! " ++ s
, which is syntactic sugar for s -> (++) "Haq! " s
. That, in turn can be eta-reduced to (++) "Haq! "
, or equivalently, using section notation for operators, ("Haq! " ++)
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…