乱数生成は通常 State モナドを用いて行われる。しかし、State モナドはクライアントアプリにシードへの書き込みアクセスを与えてしまうので、機能過剰だ。そのため、アプリは同じ乱数の数列を繰り返してしまったり、間違えて 9, 9, 9 と延々と返してしまう可能性がある。
理想的には、クライアント側は乱数をリードオンリーにしたい。シードの設定は別のレイヤーで行われる。
乱数生成のインターフェイスを圏論的に正しくモデル化するとどうなるだろうか?
このトークは 3つの利点を提起する。第一は答えが分かることだ。第二は Free モナドの実例を見れることだ。最後に、双対性 (duality) を使ってこの理論を覚えるコツを紹介する。
票中 票投票済み