Ich versuche, eine Funktion mit einer Anzahl von let-Anweisungen zu definieren, aber ich bekomme immer einen Fehler parse error on input 'let'
. Ich bin immer noch neu in Haskell, so dass ich nicht wirklich sehen kann, was dieses Problem verursacht.parse Fehler bei Eingabe 'let' mit mehreren lassen Blöcke
Hier ist meine Funktion:
myFunc :: ([String], Int) -> (Int, Int, Int) -> ([String], Int)
nextGuess (prev_string, prev_int) (a1, a2, a3) = (new_string, new_int)
let new_int_1 = if a3 - a1 < 0
then prev_int
else (filter (myPred1 a3 prev_string) prev_int)
let new_int_2 = if a2 - a1 < 0
then new_int_1
else (filter (myPred2 a2 prev_string) new_int_1)
new_int = filter (myPred3 a1 prev_string) new_int_2
Ich werde nicht erklären, was die Funktion tun soll, weil das auf die Frage irrelevant ist, ist mein Hauptproblem, dass es auf den ersten let
ein Parse-Fehler Aussage und ich weiß nicht warum.
Andere haben bereits über den Unterschied zwischen 'Let' ...' In' und 'Where' hier geantwortet. Aber wie beim Einrücken, eine gute Faustregel ist, dass Sie nicht in Schwierigkeiten geraten (und müssen nicht fiddly Ausrichtung der Dinge tun), wenn Sie nur Newline + Einzug nach Layout-Keywords wie "do", "Let" , 'wo',' Fall' ... 'von' und so weiter. –