Haskell - Parse-Fehler bei Eingabe '|'

7
%Vor%

Ich habe genau diesen Code in einer .hs-Datei und bekomme beim Laden immer den gleichen Parse-Fehler. Ich glaube nicht, dass es tatsächlich irgendwelche Fehler enthält - daher ist mein derzeitiger Gedanke, dass das "|" Das Zeichen ist nicht das, was Haskell will, aber es ist das Standardzeichen auf meiner Macbook-Tastatur (mit Mac OS). Ist es möglich, und wenn ja, wie gehe ich damit um? Ich verwende derzeit TextEdit, um den Code zu schreiben, wobei die Klartexteinstellung aktiviert ist.

    
Lesi Alex 29.03.2013, 22:39
quelle

2 Antworten

14

Achten Sie darauf, die Wachen einzurücken; Haskell hat signifikante Leerzeichen.

%Vor%     
user142019 29.03.2013 22:40
quelle
5

Alles, was Sie tun müssen, ist, Platz vor den Wachen hinzuzufügen, und der Code funktioniert gut.

%Vor%

(user142019 hat diese Lösung bereits angegeben, aber ich fühlte, dass eine Erklärung benötigt wird, um die Lösung zu verstehen)

Erläuterung:

Haskell verwendet Leerzeichen-Einrückungen, um die Struktur und den Umfang seines Codes zu steuern. Andere Programmiersprachen (wie Java für Beispiel) stützen sich auf geschweifte Klammern, Haskell hat stattdessen Einbuchtungen.

Ihr Code funktioniert nicht, weil Haskell erwartet, dass der Funktionskörper auf einer tieferen Einrückungsstufe als die Funktionsdefinition und anderen Funktionsdefinitionen auf derselben Ebene liegt. Jede neue Zeile auf derselben Einrückungsebene würde versucht werden, als neue Funktionsdefinition interpretiert zu werden, die nicht mit einem Wächter | beginnen darf, daher der Parse-Fehler, den Sie erhalten.

Mit Ihrem Mac-Zeichenschlüssel und Ihrem Texteditor ist nichts falsch.

Zum Thema Einrückungen: Registerkarten funktionieren nicht. Sie müssen also Leerzeichen manuell eingeben oder die Tabulatoreinstellungen Ihres Editors ändern, um statt eines Tabulators 4 Leerzeichen einzufügen (ich würde es empfehlen). (Notepad ++ ermöglicht dies zum Beispiel, es ist meine bevorzugte Wahl für die Verwendung mit Haskell).

    
Jonas Maurer 29.07.2014 10:59
quelle

Tags und Links