Lassen Bindungen in Do-Notation ohne Layout "in"?

8

In Haskell können Sie sagen

%Vor%

und das wird nicht kompiliert:

%Vor%

Aber wenn ich explizites Layout verwende, kompiliert dies nicht:

%Vor%

aber das funktioniert:

%Vor%

Habe ich Recht? Gibt es einen Ort, an dem ich mehr über explizites Layout lesen und Notation machen und lassen kann? Abschnitt 3.14 des Haskell 98-Berichts scheint mir zu empfehlen, dass mein drittes Beispiel funktionieren sollte, wie es sagt, ich kann schreiben

%Vor%

und es übersetzt sich in

%Vor%     
Omari Norman 28.01.2014, 22:24
quelle

1 Antwort

2

Die normative Antwort auf Ihre Frage finden Sie in der Beschreibung des Haskell-Berichts zur Layout-Regel .

Kurz gesagt, müssen Sie ein Semikolon zwischen Ihrem let-Block und der nächsten Anweisung des do-Blocks platzieren. Dieses Semikolon muss außerhalb des Blockes liegen. Wenn Sie nicht Layout für den Let-Block verwenden, ist das einfach, sagen Sie einfach:

%Vor%

Wenn Sie jedoch Layout für den let-Block verwenden, besteht die einzige Möglichkeit zum Schließen des let-Blocks darin, eine Zeile in einer Spalte vor der Spalte von x zu beginnen. Das bedeutet, dass du etwas schreiben musst:

%Vor%

Oh, und für Ihr anderes Beispiel, wieder mit Layout wird ein Semikolon eingefügt vor dem in , also entschlüsselt Ihr Code zu:

%Vor%     
user3188445 02.08.2015, 08:30
quelle

Tags und Links