Haskell Compiler frage?
Hallo,
ich habe das hier stehen:
alternative :: [Integer] -> Integer
alternative = foldr (\x ys-> if (x `mod` 11 == 0) then 13 + ys else x * ys) 7
Wieso muss ich keine Variable angeben in der Funktionsdefinition? Sowas wie alternative xs = foldr .. .. xs. Ich hätte erwartet, dass er sich beschwert, das nicht genug Argumente an foldr übergeben wurden wenn ich das nicht mache, aber es läuft ohne Probleme. Hat das was mit Eta reduction zu tun?
Schonmal vielen Dank:))
1 Antwort
Vom Beitragsersteller als hilfreich ausgezeichnet
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
Exakt, da passiert eine Eta-Conversion. Du hättest auch schreiben können:
alternative :: [Integer] -> Integer
alternative = \list -> foldr (\x ys-> if (x `mod` 11 == 0) then 13 + ys else x * ys) 7 list
\x -> f x
und
f
sind äquivalent.