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?
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 ...
show
zeigt die Variable so an, wie Sie sie eingegeben haben.
Scheint ziemlich regelmäßig für mich.
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.
Dann schau in ghci was passiert mit foo.show
: