nobsun です。 > わからないのは > putChar 'a' > で a が出力されて > [putChar 'a'] > では [<<IO action>>] と show されることです。 > どうして前者は <<IO action>> と show されずにアクションが > 実行されるのでしょうか。 Prelude> 'a' 'a' Prelude> この場合、'a' という式を評価した結果 a を show しています。 Prelude> putChar 'a' a Prelude> この場合、a と出ているのは、副作用で出力です。 putChar 'a' を評価した 「結果の値」を show しても何も表示されません。 Prelude> show (putChar 'a') "<<IO action>>" Prelude> show は引数の式を完全に評価するとは限りません。 それは、show の定義によります。 --nobsun -- ML: haskell-jp / quickml.com 使い方: http://QuickML.com/