一度、会社のブログに書いた内容なのですが、直したい部分があったため書き直しました。 ここで書いている内容はとりあえず動けばいいというスタンスで実験的にコードを書いていました。最近、以下のrepositoryで実装し直しています。stanzという名前はもともとstanっていう統計モデリングをDSLで書けるツールがあるので、最後にzをつけた感じです。純粋関数型で実装されたライブラリは最後にzをつけることがあるみたいな? https://github.com/sdual/stanz はじめに 関数型言語において参照透過性が保たれるためには、ある値を代入された関数はいかなる場合でも同じ値を返さなければなりません。しかし、確率的事象を扱いたい場合には確率に従って毎回異なる値を返してしまうため、その性質が壊されてしまいます。離散確率については取りうる値の数が限られているため、それぞれの事象とその確率を