Free Monadとは
さて、この「Freeモナド」について、オレオレ定義で簡単に言葉にすると。「Functorと組み合わせて様々な挙動を実現できるモナド」です。capriccioso String Creating(Object something){ return My.Expression(something); }
つまるところ
要はFree Monadは、Pureな値が何かの型によってリストのように順々にくるまれた構造をもつデータ型を表していて、Listにおけるfoldのような畳み込みと同様に、Impureな部分をたどっていってPureな部分に到達するまでfmapを繰り返して処理を行いますみょんさんの
もう少し圏論的な説明は
じゃあこの操作を普通の関手でもできるようにしてやろうということを考えると自然とFreeモナドが構成できる。直和が定義できる圏であれば、自由モノイドを作るのと同じ要領でモナドを作ればよい。北海道苫小牧市出身のPGが書くブログ
実際どう使うか
インターフェースを定義するみたいなイメージでいいのかな、Functorが具象クラスで。
RWHの15章を読みなおすのもいいらしい(これから読む)。