自動的にそれを促しGHCiの中IO
アクションを実行しなくIO
と非IO
の違いを理解しようとする学生のための、これはいいです、アクションを実行し、結果を示しています。 GHCiの設定を変更してアクションを実行する方法はありますか?代わりに<<IO Int action>>
のようなものを表示しますか? STアクション(ただし、アクションが実行されなければならない)のためのより多くの結果のようなもの:IO結果のGHCiでの印刷を無効にしますか?
今それがない:
> return 1 :: IO Int
1
> return 1 :: ST s Int
<<ST action>>
私が希望:
> return 1 :: IO Int
<<IO Int action>>
> putStrLn "bla"
bla
<<IO() action>>
編集:
- 私はちょうど
IO
がおそらく特別に扱われる唯一のものであることが判明しましたGHCiのことで、ST
は実際に"<<ST action>>"
を返しShow (ST s a)
のインスタンスを持っています。だからもし私がIO
のこの特別な扱いを無効にすることができれば、それで十分でしょう。 - 許可されたコードの変更については、評価された式を手動で変更することはオプションではありません。ライブラリの変更があるかもしれませんが、私はそれをしたくないでしょう(私はラップを作成したと考えました
IO
タイプですが、インタプリタはアクションを実行しません)。 GHCiが何とか自動的にIO
アクションをラップすることができれば、それはオプションになります。
は許容コードの変更はありますか?あなたはあなたが持っているIO値を最初に値を実行し、あなたが好きなものを印刷する別のものとラップすることができます。 – usr
usr:評価対象の式ではありません。質問の編集を参照してください。 –