HaskellのIOが使いづらい理由の一つは、世界の状態に影響をあたえる動作と
そうでない動作を区別しないことじゃないだろうか、とふと思った。
getHomeDirectoryとかreadArrayなんかの読み出し動作は
相対的な実行順序を指定せずに使うことができるべきだよな。