自由モナドとは何ですか? 質問する

自由モナドとは何ですか? 質問する

フリーモナドという言葉が出てきた そして それからしばらく前から、フリーモナドについて議論していましたが、誰もがそれが何なのか説明せずに使用したり議論したりしているようです。では、フリーモナドとは何でしょうか? (私はモナドと Haskell の基礎についてはよく知っていますが、圏論についてはごく大まかな知識しかありません。)

ベストアンサー1

さらに簡単な答えは次のとおりです。モナドは、モナドコンテキストが によって折りたたまれたときに「計算」するものですjoin :: m (m a) -> m a(>>=は として定義できることを思い出してくださいx >>= y = join (fmap y x))。これは、モナドが連続した計算チェーンを通じてコン​​テキストを運ぶ方法です。一連の計算の各ポイントで、前の呼び出しからのコンテキストが次の呼び出しで折りたたまれるためです。

フリー モナドはすべてのモナド法則を満たしますが、折りたたみ (つまり計算) は行いません。ネストされた一連のコンテキストを構築するだけです。このようなフリー モナド値を作成したユーザーは、ネストされたコンテキストで何らかの処理を実行する責任があるため、このような構成の意味は、モナド値が作成された後まで延期できます。

おすすめ記事