Beim Ausführen von IO
Aktionen in GHCi Prompt führt es automatisch die Aktion und zeigt Ergebnis, das ist schön, aber nicht für Studenten, die versuchen, den Unterschied zwischen IO
und non IO
zu verstehen. Gibt es eine Möglichkeit, die Konfiguration von GHCi so zu ändern, dass sie die Aktion ausführt, aber stattdessen so etwas wie <<IO Int action>>
anzeigt? Etwas mehr wie Ergebnis für ST-Aktionen (aber Aktion durchgeführt werden soll):Drucken von IO-Ergebnissen in GHCi deaktivieren?
jetzt es tut:
> return 1 :: IO Int
1
> return 1 :: ST s Int
<<ST action>>
ich möchte:
> return 1 :: IO Int
<<IO Int action>>
> putStrLn "bla"
bla
<<IO() action>>
bearbeiten:
- Ich habe gerade festgestellt, dass
IO
ist wahrscheinlich das einzige, was speziell behandelt wird von GHCi,ST
hat tatsächlich Instanz fürShow (ST s a)
, die"<<ST action>>"
zurückgibt. Also vielleicht, wenn ich diese spezielle Behandlung vonIO
deaktivieren könnte, wäre es ausreichend. - In Bezug auf zulässige Codeänderungen: manuelle Änderung ausgewerteten Ausdruck ist keine Option. Änderung in Bibliotheken könnte sein, aber ich würde es vorziehen, dies nicht zu tun (Ich erwog, den umschlossenen Typ
IO
zu erstellen, aber dann wird der Interpreter die Aktion nicht ausführen). Wenn GHCi könnte automatisch AktionenIO
wickeln, wäre das eine Option.
Sind Code-Änderungen akzeptabel? Sie könnten den IO-Wert, den Sie haben, mit einem anderen umbrechen, der zuerst den Wert ausführt, und dann etwas drucken, das Ihnen gefällt. – usr
usr: Nicht von dem auszuwertenden Ausdruck, siehe meine Bearbeitungen der Frage. –