Scalaでstack overflowしないFree Monad TransformerやFree MonadPlus

以前いくつか関連したもの書きましたが

たぶんFree MonadPlus出来た気がします。

https://github.com/scalaz/scalaz/pull/1056/

そして、scalazにFreeTという (stack overflowしない) Free Monad Transformer 入ったの解説したことなかったですね。

https://github.com/scalaz/scalaz/pull/1035

purescriptのやつ真似したら出来たらしいです。自分も説明できるほどに理解できてません。scalazのものが、微妙にpurescriptのものと違う気がするのですがなんなんでしょう?

というわけで、解説の代わりにいくつかリンクだけ貼っておきます。

FreeT自体も、FreeTのMonadPlusのインスタンスも、scalapropsでテスト書いて通ってるので大丈夫だと思います。

あと、この件があったりして、まだscalaz7.2のfinal出せてないけどはやめに出したい