モナドコレクション、モナドタイプ、モナド操作の違いは何ですか?

user2715182

私はscalaのモナドの概念を理解しようとしています。モナドに関連するさまざまな用語があります。モナド型クラス、モナド型、モナド操作、モナドコレクションなど。モナドコレクションは非モナド操作をサポートできますか?Scalaのモナドに関連するさまざまな用語をわかりやすく説明することは可能ですか?

ユヴァル・イチャコフ

モナドコレクションは非モナド操作をサポートできますか

モナドのコレクションは、2つのメソッドを定義する必要がありますpurebind最も重要なことは、アイデンティティ(右と左)と結合性のモナドの法則に従わなければなりません。

このようなコレクションはList[A]Scalaにあり、pureapplyメソッドを介して次のようになります。

val l: List[Int] = List(1,2,3)

そしてflatMapbind):

val flat = l.flatMap(i => List(i))

法律:

左のアイデンティティ:

val f: Int => List[Int] = x => List(x + 1)

val x = 1
val left = List(x).flatMap(f)
val right = f(x)

left == right

正しいアイデンティティ:

val y = List(1)
val left = y.flatMap(List(_))
val right = y

left == right

連想性:

val f: Int => List[Int] = x => List(x + 1)
val g: Int => List[Int] = x => List(x + 2)

val list = List(1,2,3)
val left = list.flatMap(f).flatMap(g)
val right = list.flatMap(x => f(x).flatMap(g))

left == right

あなたが見ることができるように、List[A]また、モナドの定義の一部ではない他の操作、などのサポートmap(事実によって自由のために与えられているがList[A]モナドであり、すべてのモナドもファンクタである)、 、filterfoldLeftなど

あなたの質問に答えるために:はい、モナドプロパティを持つコレクションは、モナドによって定義された操作以上のものをサポートできます。

より具体的には、それは型クラスList[A]実装するモナドコレクションでありMonad[List]それによってモナド操作を持つモナド型であると言えます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ライターモナドとリストライターモナドの違いは何ですか

分類Dev

ファンクターとモナドの違いは何ですか?

分類Dev

LinuxMintシナモンのウィンドウのタイリングとスナップの違いは何ですか

分類Dev

Monad.Readerと(->)モナドの違いは何ですか?

分類Dev

通常の操作 & および * と一緒に、プレーン ポインターはモナドですか?

分類Dev

これら2つのモナド変換子の違いは何ですか?

分類Dev

Haskellモナドの `let .. indo`と` <-`表記の違いは何ですか?

分類Dev

多分モナドをモナドアクションで使用する

分類Dev

スナップのクラシックモードとは何ですか?また、一部のスナップがスナップなしでインストールされないのはなぜですか(MS Visual Studioなど)?

分類Dev

スナップのクラシックモードとは何ですか?また、一部のスナップがスナップなしでインストールされないのはなぜですか(MS Visual Studioなど)?

分類Dev

モナドの一時停止-モナドタイプはどのように見えるべきですか?

分類Dev

モナドはエンドファンクターのカテゴリーの単なるモノイドですが、何が問題なのですか?

分類Dev

RWSモナドでのテレタイプフリーモナドの解釈

分類Dev

インメモリデータベースとリレーショナルデータベース+ NoSQLデータベースの違いは何ですか?

分類Dev

LUISのプレビューモードとプロダクションモードの違いは何ですか?

分類Dev

Javaアプリケーションでクイナモドキ科コokieで

分類Dev

ターミナル、コンソール、シェル、コマンドラインの違いは何ですか?

分類Dev

ターミナル、コンソール、シェル、コマンドラインの違いは何ですか?

分類Dev

なぜIOはコモナドではなくモナドなのですか?

分類Dev

実体関連モデルとリレーショナルモデルの違いは何ですか?

分類Dev

Scala IOモナド:ポイントは何ですか?

分類Dev

fmapのモナド「バージョン」の名前は何ですか?

分類Dev

セレクションモナドが適用可能でモナドであることのCoq証明

分類Dev

コンソール、シェル、ターミナル、ターミナルエミュレーター、ターミナルマルチプレクサー、およびウィンドウマネージャーの違いは何ですか?

分類Dev

タブ/モバイルモードでクリックすると、ナビゲーションバーのドロップダウンが縮小します

分類Dev

関数型プログラミングにおけるストアコモナドと表現可能なストアコモナドの違いは何ですか?

分類Dev

コマンドラインでシナモンプリファレンスを設定するにはどうすればよいですか?

分類Dev

型コンストラクターはモナドですか、それともモナドを持っていますか?

分類Dev

データ型コンストラクターのコンテキストで、さまざまなモナディックおよびアプリケーションのバインド/コンビネーターを理解していますか?

Related 関連記事

  1. 1

    ライターモナドとリストライターモナドの違いは何ですか

  2. 2

    ファンクターとモナドの違いは何ですか?

  3. 3

    LinuxMintシナモンのウィンドウのタイリングとスナップの違いは何ですか

  4. 4

    Monad.Readerと(->)モナドの違いは何ですか?

  5. 5

    通常の操作 & および * と一緒に、プレーン ポインターはモナドですか?

  6. 6

    これら2つのモナド変換子の違いは何ですか?

  7. 7

    Haskellモナドの `let .. indo`と` <-`表記の違いは何ですか?

  8. 8

    多分モナドをモナドアクションで使用する

  9. 9

    スナップのクラシックモードとは何ですか?また、一部のスナップがスナップなしでインストールされないのはなぜですか(MS Visual Studioなど)?

  10. 10

    スナップのクラシックモードとは何ですか?また、一部のスナップがスナップなしでインストールされないのはなぜですか(MS Visual Studioなど)?

  11. 11

    モナドの一時停止-モナドタイプはどのように見えるべきですか?

  12. 12

    モナドはエンドファンクターのカテゴリーの単なるモノイドですが、何が問題なのですか?

  13. 13

    RWSモナドでのテレタイプフリーモナドの解釈

  14. 14

    インメモリデータベースとリレーショナルデータベース+ NoSQLデータベースの違いは何ですか?

  15. 15

    LUISのプレビューモードとプロダクションモードの違いは何ですか?

  16. 16

    Javaアプリケーションでクイナモドキ科コokieで

  17. 17

    ターミナル、コンソール、シェル、コマンドラインの違いは何ですか?

  18. 18

    ターミナル、コンソール、シェル、コマンドラインの違いは何ですか?

  19. 19

    なぜIOはコモナドではなくモナドなのですか?

  20. 20

    実体関連モデルとリレーショナルモデルの違いは何ですか?

  21. 21

    Scala IOモナド:ポイントは何ですか?

  22. 22

    fmapのモナド「バージョン」の名前は何ですか?

  23. 23

    セレクションモナドが適用可能でモナドであることのCoq証明

  24. 24

    コンソール、シェル、ターミナル、ターミナルエミュレーター、ターミナルマルチプレクサー、およびウィンドウマネージャーの違いは何ですか?

  25. 25

    タブ/モバイルモードでクリックすると、ナビゲーションバーのドロップダウンが縮小します

  26. 26

    関数型プログラミングにおけるストアコモナドと表現可能なストアコモナドの違いは何ですか?

  27. 27

    コマンドラインでシナモンプリファレンスを設定するにはどうすればよいですか?

  28. 28

    型コンストラクターはモナドですか、それともモナドを持っていますか?

  29. 29

    データ型コンストラクターのコンテキストで、さまざまなモナディックおよびアプリケーションのバインド/コンビネーターを理解していますか?

ホットタグ

アーカイブ