Haskellを書くときはEmacs(Meadow)使ってるんですが、doの次の行のインデントがうまく合わないなぁと思っていたら大きな間違いだった。
main = do cs <- getContents putStr cs
ここで2行目でTabを押すと
main = do cs <- getContents putStr cs
さらにもう一度押すと
main = do cs <- getContents putStr cs
考え得る全てのパターンを網羅してくれるのね。ありがたやありがたや。