モナドを理解した人がまだ理解していない人になんとか理解してもらおうと書く解説記事ばかり積み上がっていくのはもはやIT系ブログ界の伝統芸ですが、この記事で少しでも貢献になるでしょうか。 この記事ではHaskellも関数型言語も出て来ません。読み慣れた手続き型言語でIOモナドがどういうものか読み解いていきます。 関数プログラマが避けたいこと=不確定さ 解説の前にまず例題を決めましょう。例題は「現在時刻を表示するプログラム」とします。簡単ですね。ちょっと書いてみましょう。 // Javaの例 Calendar now = GregorianCalendar. getInstance(); DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); System.out.println(formatter.format(n