b)\)は同じでなければならない。\(m\)はコンピュータの世界から人間の世界へと視点となる世界を代えていた。包み紙で包み込むような性質なのでこのようなものはコンテナと呼ばれる。\(m\)を二回かぶせた場合には人間の世界から人間の世界へと変えているので何も変わらない。コンテナを二回被せたものは一回被せたものと同じである。そこで、この性質を関数にし\(join\)と名付けよう。このようにすると\(>>=\)は次のように定義できる。ma)モナドを\(>>=\)と\(return\)のペアではなく、\(join\)と\(return\)のペアで定義すると次のようになる。]をモナドとして定義できる。これらをモジュールとして記述したのが下記のコードである。前回と同様にこれを利用するために下記のプログラムを用意する。g'前回と同じように実行すると次の結果を得る。(-3)[-3]ところで、\(join\)は前々回の集合と冪集合を説明するときに出てきたものだ。冪集合から冪集合を作ったとしても元の冪集合と同じであるという話をしたが、これに相当するのが、\(join\)である。従って、今回のモナドの定義は集合と冪集合の関係を定義したものということができる。その時に用いた図を再掲する。モナドの理解が進んだところで、モナドの使い方を次回は学ぶ。最後にモナドについてまとめておこう。モナドとは、コンテナと呼ばれる性質を持つ関手である。関手は一方の世界(コンピュータの世界)の構造を他方の世界(人間の世界)に写すことができる。コンテナは一方の世界を他方の世界で包む性質である。コンテナには二つの機能がある。一つの機能は一、方の世界のものを他方の世界で表現したものに写すものである。これは恒等射の性質を拡張したものである。二つ目の機能は関手を二回適応したものは関手を一回適応したものと同じであるというものだ。関手は一方の世界を他方の世界に写すだけでなく、他方の世界を他方の世界へ写すこともできる。後者は他方の世界で二重にくるむことになるが、これは一重でくるんだものと変わらないというのが二番目の機能である。コンテナの二つの機能は\(return\)と\(join\)と呼ばれる二つの関数で実現される。今回の記事はコモナド(余モンドとも言われる)だ。参加グループ知識リンクはてなブログブログをはじめる週刊はてなブログはてなブログProはてなブログをはじめよう!bitterharvestさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。