>212
そんなもんです。
forall 使うなら、 -fglasgow-exts つきでコンパイルしないとだめ(Hugsなら-98だっけ)

>213
明示的に {} を使うという方法はあるにはあるが。
do { putStrLn $ "Woud you like some coffee?(y/n)."
; hFlush stdout
; c <- getChar
; if c == 'y'
then putStrLn "Yes,please."
else putStrLn "No,thank you."
}
のようにすると綺麗にインデントできる。

まぁ私は手で空白を入れたり一行にしちゃったりする方が多いけれど。