をモナドはすでに圏論で知られている用語であるため。 Monadが従わなければならない3つの非常に重要なMonadの法則もあります。
理論的には、私たちは "FlatMappable"または "Bindable"のようなMonadsを呼び出すことができますが、 "Monad"という名前はすでに関数型プログラミングコミュニティの確立された用語であり、Monadの法律。
なぜ、あなたは個々のAPIを個別に学習するよりもMonadsに感謝するべきなのか、それはすべて知識の抽象化と再利用に関するものです。多くの場合、新しいコンセプトを見ると、それらを既に知っているコンセプトと比較します。
未来のモナドについてすでに理解している場合は、タスクモナドを理解する方がはるかに簡単です。
Scalaのfor-comprehensions
はMonadsのみで動作することは言うまでもありません。実際にはfor-comprehensions
はflatMap
とmap
の文法的な砂糖です(これはfilter
ですが、Monadsにはあまり関係ありません)。 Monadのインスタンスがあるかどうかを認識することで、この余分な構文的な砂糖を利用することができます。
また、抽象化を完全に把握したら、モナドの実際のタイプの重要性が低いモナドトランスフォーマーのような概念を利用できます。
最後には、ここでは完全酒のためのモナドの法則です:
- 左アイデンティティ:
M[F].pure(x).flatMap(f) == f(x)
- 右アイデンティティ:
m.flatMap(pure(_)) == m
- 関連性:コンクリートのAPI対
m.flatMap(f).flatMap(g) == m.flatMap(x => f(x).flatMap(g))