今日はTwitter上でIOモナドの話で盛り上がったのだが、その時、 って電波が降りてきて、厳密にはIOモナドってよりはIOアクションのほうが正しかったかもしれないが、IOってロマンチックだよねって思ったので久しぶりにブログ書いてみる。 ちなみに、僕は圏論とかモナドとか、そんなに詳しくないので、間違ってたらごめりんこ。他のしっかりした記事みてね。 1. IOって型について考えてみる。 まず、IOって型について、例をとって考えてみる。 ここでは、データーベースにあるUserテーブルから、ユーザーIDによる検索でUserエンティティを取得する関数があるとする。 getUserById :: String -> UserEntity こんな感じの関数になる。 ところが、この関数、Haskellのような純粋な言語では問題なんだよね。 まず、参照透過的でない。参照透過とは、 「ある式の評価結果が常に