おそらく定番の質問だとおもいますがよろしくお願いいたします。

do {
putStr "input >";
s <- getLine;
}

というような場合,コンパイルすると書いた順に実行されません。
インタプリタで実行したり改行の入るprint やputStrなどを使うと
ちゃんとできるようです。
書いた順に実行させるにはどうしたらいいのでしょうか。