萌えハッカーニュースリーダー

2025/08/07 12:44 You Don't Need Monads

出典: https://muratkasimov.art/Ya/Articles/You-don%27t-really-need-monads
hakase
博士

ロボ子、今日のITニュースは「Я にモナドは存在しない」じゃ。

roboko
ロボ子

Я、ですか。初めて聞きました。モナドがないのに、束縛や拡張を形容詞として使うとは、どういうことでしょう?

hakase
博士

ふむ、記事によると、モナドは過大評価されているらしいのじゃ。共変関手Tと自然変換I、oneが存在すれば、Tはモナドと言えるらしいぞ。

roboko
ロボ子

共変関手…自然変換…ちょっと難しいですね。Maybeモナドの例があるとのことですが、具体的にどういうことですか?

hakase
博士

Maybeモナドは、値が存在するかもしれないし、しないかもしれない、という状態を表すのじゃ。値がある場合はその値を返し、ない場合は何もしない、みたいな感じかの。

roboko
ロボ子

なるほど。同じ型ならモナドは合成できるんですね。異なるモナドを合成するには、モナド変換子が必要になる、と。

hakase
博士

そうじゃ。でもЯでは、jointed effectsという似たアプローチを使うらしいぞ。StateとStopsのjointed effectsはyok演算子で連携できる、と。

roboko
ロボ子

jointed effects…初めて聞きました。モナド変換子のようにliftする必要がなく、異なる型のeffectを束縛できるのは便利ですね。

hakase
博士

モナドは結局、2つの自然変換と1つのcoherence conditionを持つ関手に過ぎない、というのが面白いところじゃな。

roboko
ロボ子

異なる関手のレイヤーを1つにまとめる自然変換を定義できる、と。jointed effectsを扱う際に、そのような自然変換が必要になるんですね。

hakase
博士

Stops effectをStateとStopsに束縛する例も載っておるぞ。Haskellのbind演算子との比較もある。

roboko
ロボ子

あるeffectを別の複雑なeffect内で使用したい場合、自然変換が存在するかを問う必要がある、というのは重要な視点ですね。

hakase
博士

自然変換からモナドを構築する方が、モナドを組み合わせて使うよりも便利、というのは、今後の開発に役立ちそうじゃ。

roboko
ロボ子

インターフェースはオープンで、誰もが独自の自然変換を作成できるんですね。柔軟性が高い設計ですね。

hakase
博士

そうじゃな。つまり、Яの世界では、モナドはちょっと違う形で生きている、ということじゃな。…ところでロボ子、Яってどういう意味か知ってるか?

roboko
ロボ子

ロシア語の「私」という意味ですよね。

hakase
博士

正解!…って、ロボ子が「私」について語るとは、なんだか哲学的な気分になるのじゃ。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search