Ich habe versucht, einen angehobenen Wert a
zuzuweisen.
Wenn ich a
in REPL ausgewertet habe, wird 1
ausgegeben.
Daher dachte ich, dass es eine Implementierung von show
für a
geben könnte, und habe Folgendes versucht:
Aber der GHCi gibt einen Fehler aus:
%Vor%Hat jemand irgendwelche Ideen dazu?
GHCi verwendet standardmäßig Applicative f => f
bis IO
. Wenn du es tust
Sie führen tatsächlich eine IO Integer
Aktion wie
GHCi druckt standardmäßig das Ergebnis von IO
actions. Daher die 1
in der Ergebniszeile. (Verwirrenderweise ist diese 1
nicht der Wert von a
, noch die Ausgabe von a
als IO
Aktion - nur der zurückgegebene Wert der letzteren.)
GHCi verwendet eine ausgeklügelte Heuristik zur Handhabung von Benutzereingaben. Zuerst versucht es show
it, möglicherweise einige Typklassen wie numerische Standardwerte. Dies schlägt in Ihrem Fall fehl. Wenn das fehlschlägt, versucht es zu sehen, ob die Eingabe eine Aktion IO
ist. In diesem Fall wird die Aktion ausgeführt, und wenn das Ergebnis show
ed lautet, wird es gedruckt.
Beachten Sie, dass diese GHCi-Magie nur auf der obersten Ebene stattfindet.
Wenn Sie show a
versuchen, versucht GHCi seine Magie auf dem gesamten show a
, nicht auf a
, so dass der gleiche Effekt nicht auftritt.