Keine Variable für -

8

Dieser Code funktioniert offensichtlich

%Vor%

Warum dieser nicht?

%Vor%     
Oskar K. 27.09.2013, 13:11
quelle

4 Antworten

17

Weil% <- nicht definiert ist. Es übersetzt zu

%Vor%

Sie könnten stattdessen =<< verwenden:

%Vor%     
Fred Foo 27.09.2013, 13:20
quelle
17

Erstens ist <- kein Operator. Es ist ein spezielles Syntaxelement, das auf der linken Seite ein Muster erfordert.

Zweitens, wenn es ein Infix-Operator wäre, würde $ <- nicht funktionieren, da Sie nicht zwei Infix-Operatoren nebeneinander haben können.

    
n.m. 27.09.2013 13:20
quelle
6

Der <- "extrahiert" einen Wert aus einem monadischen Container. IO ist eine Monade und kann daher zum Extrahieren eines Werts aus einer IO -Aktion verwendet werden. Die Syntax von Haskell besagt jedoch, dass Sie vor der Verwendung an einen Namen binden müssen. In Wirklichkeit ist <- überhaupt kein Operator, sondern syntaktischer Zucker für den Operator >>= (ausgesprochen "bind"). Also wenn du schreibst

%Vor%

Es wird in

umgewandelt %Vor%

Nun stell dir vor, du hättest viel mehr Statements in main . Vielleicht haben Sie mehrere Werte mit <- extrahiert, und einige der Ausdrücke haben mehr als einen dieser Werte gleichzeitig verwendet. Man könnte definitiv die "entzuckerte" Version schreiben, aber es würde sehr, sehr schwierig werden. Die Do-Notation vereinfacht dies und sorgt dafür, dass der Compiler sich darum kümmert.

    
bheklilr 27.09.2013 13:23
quelle
3

Sie können es wie folgt schreiben

%Vor%     
Ilya Rezvov 27.09.2013 13:19
quelle

Tags und Links