>>10
なんか分かった気がする。
getChar :: IO Char のように、
評価する毎に次の文字が取得できるモナドを
仮定しているような気がしてきた。