seltsamer Fehler in haskell über das Einrücken von if-then-else

7

Ich habe den folgenden Code:

%Vor%

Ich bekomme einen Fehler in der Zeile mit dem obigen Kommentar, der Fehler ist:

%Vor%

Ich arbeite mit Emacs, es gibt keine Leerzeichen und ich verstehe nicht, was ich falsch gemacht habe.

    
Drakosha 31.05.2010, 19:29
quelle

2 Antworten

8

Indent then und else Zeilen eine Ebene mehr. Die Dinge können sich jedoch ändern Conditionals und do -notation .

    
Yasir Arsanukaev 31.05.2010, 19:35
quelle
11

Dies wird im Abschnitt " if -within do " des Wikibooks-Artikels auf Haskell Eindruck.

Das Problem ist, dass die Zeilen do und then für else -desugarer wie neue Anweisungen aussehen:

%Vor%

Durch das Einrücken der Zeilen then und else wird das Problem gelöst.

UPDATE: Da dies mit beginner markiert ist, werde ich auch bemerken, dass etwas wie das Folgende in Haskell generell als idiomatischer angesehen wird:

%Vor%

Dies funktioniert genauso wie Ihr foo , vermeidet aber den do Zucker und verwendet den Mustervergleich anstelle von head und tail und die if-then-else Kontrollstruktur. Informell sagt die >>= hier: "Nimm die Ausgabe von bar... aus ihrem IO wrapper und führe sie durch checkZero , gib das Ergebnis zurück".

    
Travis Brown 31.05.2010 19:37
quelle