Haskell の入出力のバッファリング

参考にした記事: stackoverflow/ putStrLn doesn’t print to console

「すごいHaskell楽しく学ぼう!」を復習していて,入出力で詰まったのでメモ.この本の8.3(英語のWeb版だとこの辺)で,IOを用いた対話型のプログラムが扱われる.

main = do
	putStrLn "Hello, what's your name?"
	name <- getLine
	putStrLn ("Hey " ++ name ++ ", you rock!")

runghc したら一向にHello, what’s your name?と聞かれないので困ってしまった.どうやらバッファリングされてしまってるらしい.上に掲げたstackoverflowの記事で解決策を見つけた.

import System.IO

main = do
	hSetBuffering stdout LineBuffering
	putStrLn "Hello, what's your name?"
	name <- getLine
	putStrLn ("Hey " ++ name ++ ", you rock!")

このように修正しておくとちゃんと名前を聞いてくれる.

とりあえずメモしておく.

広告
コメントする

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。