特にデータアクセスのコンテキストで、Free Monad with Interpreterについて話している人々を見てきました。このパターンは何ですか?いつ使用したいですか?それはどのように機能し、どのように実装しますか?
( this などの投稿から)モデルとデータアクセスを分離することについて理解しています。よく知られているリポジトリパターンとどう違うのですか?彼らは同じ動機を持っているように見えます。
フリーモナドは基本的に、より複雑なことをするのではなく、計算と同じ「形状」でデータ構造を構築するモナドです。 ( オンラインで見つかる例があります。 )次に、このデータ構造は、それを使用して操作を実行するコードに渡されます。*リポジトリパターンについては完全には詳しくありませんが、 私が読んだもの それはより高いレベルのアーキテクチャのようであり、無料のモナド+インタプリタを使用して実装できます。一方、無料のモナド+インタープリターは、パーサーなどのまったく異なるものを実装するためにも使用できます。
*このパターンはモナドに限定されないことに注意する価値があります。実際、無料のapplicativesまたは free arrows でより効率的なコードを生成できます。 ( パーサーはこの別の例です。 )