>>149
それは気づかなかった。
その例だとdoを展開するときに>>でなく>>=を使うようにするだけで十分だけど、
類似の例がもっとあるといやだな。

>>150
newtype IO a = IO (() -> a)
で十分なはず。
C++でIOモナドを書いてみたら一応動いたのでたぶん問題ない。