IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

IOでの対話環境(ghci)とプログラム実行(runghc)の差異

環境によって挙動が異なります。ghciにて小さなコード片を試してから、プログラムを書くことが多いので、このような差異は頭の片隅においておいた方が良さそうです。

プログラム実行(runghc)

バッファされるので、コーディング上先にあるputChar 'a'がgetCharの後に表示される。

[work06]$ cat test04.hs 
import System.IO

main :: IO ()
main = putChar 'a' >> getChar >>= putChar
[ec2-user@ip-172-31-25-234 work06]$ runghc test04.hs
6
a6[work06]$ 

対話環境(ghci)

バッファはされない。

[work06]$ ghci
GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> putChar 'a' >> getChar >>= putChar
a66Prelude>