Haskell: Show vermasselt?

8

Die Funktion show in Haskell scheint nicht das zu tun, was sie sollte:

%Vor%

Wenn ich Funktionen deklariere, setze ich die Typensignaturen normalerweise als Zeigen ein, was sich nicht korrekt auf Zeilenumbrüche bezieht. Ich möchte, dass \n als Zeilenumbruch behandelt wird, nicht buchstäblich "\n" . Wenn ich den Typ zu String ändere, funktionieren die Funktionen einwandfrei. Aber ich müsste eine separate Funktion für Ganzzahlen, Gleitkommazahlen usw. implementieren.

Zum Beispiel kann ich eine Funktion deklarieren:

%Vor%

... und nenne es so:

%Vor%

Wie würde ich die Funktion erhalten, die erwarteten Ergebnisse zurückzugeben? I.e. Welche Funktion ähnelt show , kann jedoch Zeichenfolgen mit Zeilenumbrüchen zurückgeben?

    
Lucky 09.06.2009, 04:52
quelle

6 Antworten

14

Der Vertrag der show-Methode in Haskell besteht darin, dass er einen String erzeugt, der bei der Auswertung den angezeigten Wert liefert.

%Vor%     
Dave 09.06.2009, 05:02
quelle
9

Klingt so, als ob Sie eine ToString-Methode simulieren möchten, obwohl einige Ihrer Terminologie es sind ein wenig verwirrend.

Sie können es so simulieren:

%Vor%

Dies ist jedoch, wie die SPRACHE-Pragmas zeigen, nicht sehr wünschenswert. Um wirklich ein Gefühl für das zu bekommen, was Sie versuchen, wäre es einfacher, wenn wir mehr Kontext hätten ...

    
porges 09.06.2009 05:09
quelle
3

show zeigt die Variable so an, wie Sie sie eingegeben haben.

Scheint ziemlich regelmäßig für mich.

    
Alex Gartrell 09.06.2009 04:58
quelle
1

Ich bin mir nicht wirklich sicher, was Sie versuchen zu tun. Es würde helfen, wenn Sie ein wenig geklärt haben. Show macht, was es tun soll. Show erzeugt einfach eine Zeichenkette, die enthält, was angezeigt wurde.

    
Rayne 09.06.2009 14:10
quelle
1

Porges 'Plan funktioniert und ich denke, er bringt heraus, was show wirklich macht, da das verwirrende Verhalten, das Sie in ghci gefunden haben, immer noch auftaucht, wenn Sie die gewünschte IO-Funktion erhalten. Beachten Sie, dass ich eine Instanz für Char zu Porges 'Code hinzugefügt habe, da Sie vermutlich keine Anführungszeichen haben möchten.

%Vor%

Dann schau in ghci was passiert mit foo.show :

%Vor%     
Michael 09.06.2009 19:46
quelle
0

"Welche Funktion ähnelt show , kann jedoch Zeichenfolgen mit Zeilenumbrüchen ausgeben?"

Antwort: id

    
mattiast 10.06.2009 16:58
quelle

Tags und Links