Ich lerne Haskell von learnyouahaskell.com und es ist ein Beispiel, so dass:Haskell Multi-line Lambdas
search :: (Eq a) => [a] -> [a] -> Bool
search needle haystack =
let nlen = length needle
in foldl (\acc x -
> if take nlen x == needle then True else acc) False (tails haystack)
Aber wenn Sie diesen Code mit GHC versucht, es gibt mir
error: parse error on input ‘-’
Aber es funktioniert, wenn es so ist:
search :: (Eq a) => [a] -> [a] -> Bool
search needle haystack =
let nlen = length needle
in foldl (\acc x -> if take nlen x == needle then True else acc) False (tails haystack)
gibt es ein Merkmal von Haskell, die das som mehrzeiligen Lambda-Ausdrücke oder ist erlaubt Was fehlt mir?
Sie mehrzeilige Lambda-Ausdrücke sind nicht zulässig. Sie teilen die Linie jedoch am schlechtesten Ort auf. Das '->' ist wichtig! behalte das und es sollte funktionieren. – pdexter
brechen Sie einfach nicht Ihren Pfeil - halten Sie es zusammen '\ acc x ->' und einrücken Sie die nächste Zeile – Carsten
Sie können nicht einen Zeilenumbruch in der Mitte von Wörtern oder Operatoren einfügen. – melpomene