I'm looking at the tutorial http://haskell.org/haskellwiki/How_to_write_a_Haskell_program
import System.Environment
main :: IO ()
main = getArgs >>= print . haqify . head
haqify s = "Haq! " ++ s
When running this program under HLint it gives the following error;
./Haq.hs:11:1: Warning: Eta reduce
Found:
haqify s = "Haq! " ++ s
Why not:
haqify = ("Haq! " ++ )
Can someone shed some light on what exactly "Eta Reduce" means in this context?
Eta reduction is turning
\x -> f x
intof
as long asf
doesn't have a free occurence ofx
.To check that they're the same, apply them to some value
y
: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! " ++)
.