3

もし私が value を持っている場合、 free モナドによって結合された 2 つの s が 1 つに折りたたまれるようにa: Free[Op, A]、 の構造を「平坦化」することは可能ですか?aOp

コンテキスト:Opのセマンティックは操作が冪等であるため、これを解釈前の最適化ステップとして実行したいと思います。したがって、2 つが「連続して」表示される場合、2 番目は、プログラムのセマンティクスを犠牲にすることなく削除できます。

4

1 に答える 1

3

私が理解している限り、Free Monad プログラムのこの種のイントロスペクションは、各ステップが別のステップの結果に依存する順次計算を表すため、方法がありません。

Free Monad と Free Applicative の長所と短所について、John de Goes による素晴らしい講演があります ( https://www.youtube.com/watch?v=H28QqxO7Ihc )。後者は内省の力を与えます。

于 2016-10-06T13:35:13.067 に答える