- 関数型プログラミング言語Haskell Part28 [転載禁止]©2ch.net
429 :デフォルトの名無しさん[sage]:2015/06/04(木) 11:03:34.20 ID:TEKHUXbi - >>425
関手圏における対象(元の圏での自己関手)Fたちの「べき乗」 FF, FFF, FFFF, ... たちを Fにまとめるための積に相当するものとしてμが、そしてそのような「積」が結合法則を 満たすことの要請として μ(Fμ)=μ(μF) が,そしてFの「ゼロ乗」に相当するものとしてηが与えられる。ηが「積の単位元」 に該当するための要請が、μ(Fη)=id F =μ(ηF) となる。 半群の代数法則を集合と写像の図式で書き表してみると上のような法則がどのように して導かれるかわかる。 このような意味でモナドは「一般化された半群」だと言える。 一度モナドFが与えられたとき、Fを利用して X -> F Y 型の射を「合成」する手段が得られることが わかる。KleisliにちなんでKleisli射などと呼ばれる。 詳しいことはマクレーン「圏論の基礎」を読んで欲しい。例がいちいち高尚なので読みづらいが どのみちあの全ての例を理解できるひとなどいないと思っておけばいい。
|
- 関数型プログラミング言語Haskell Part28 [転載禁止]©2ch.net
431 :デフォルトの名無しさん[sage]:2015/06/04(木) 17:28:26.87 ID:TEKHUXbi - >>430
「モナド領域」で何を言いたいのかわからない。 #言葉はなるべく正確に使おう >>429の補足 モナドと半群Gの類似性を捉えるためには「単位元」を「ゼロ項演算」とみなすとよい: e : * --> G ここで、* は単元集合ならなんでもよいのだが、何か一つ決めておく。そして任意の集合Sに対して * × S と S が 1-1 かつontoな写像で結ばれているので同じと「みなす」ことにより、* は「デカルト積における単位元」 とみなせる。(集合A,Bの共通部分 A ∩B を「積集合」と呼ぶ場合があるが、全然違う「積」であることに注意)。 半群Gの「積をとる演算」m はもちろん m : G×G --> G となる。 (つづく)
|
- 関数型プログラミング言語Haskell Part28 [転載禁止]©2ch.net
432 :デフォルトの名無しさん[sage]:2015/06/04(木) 17:30:36.75 ID:TEKHUXbi - >>431
(つづき) こうやって考えてみると半群Gの結合法則は、G×(G×G)と(G×G)×Gを(当然の如く)同一視したうえで m ○ (idG×m) = m ○ (m×idG) のように表せる。ただし、○は写像の合成を表すものとする。また、 idG×m : G×(G×G) --------------> G×G <x, <y,z>> |---> <x, m(y,z)> など。そして単位元については m ○ (idG×e) = idG = m ○ (e×idG) となる。ここで、 idG×e:G ---------> G×G g |-------> <g,1> など。半群というものをこのような視点で捉えて初めてモナドとの関係が見えてくるわけです。 抽象的に見て初めて見えてくるのであってそれを乱暴に「モナドは半群である」と言い切ると、 色々誤解を招くわけです。
|
- 関数型プログラミング言語Haskell Part28 [転載禁止]©2ch.net
433 :デフォルトの名無しさん[sage]:2015/06/04(木) 17:33:45.51 ID:TEKHUXbi - (全角スペースの連続って無視されるのか。失敗した)
|
- 関数型プログラミング言語Haskell Part28 [転載禁止]©2ch.net
438 :デフォルトの名無しさん[sage]:2015/06/04(木) 23:01:33.99 ID:TEKHUXbi - >>436
ηはControl.Monad では return と呼ばれてる。FをモナドとしたときHaskell風に言えば η :: a -> F a だよ。ηは「Hask圏における自己関手を結ぶ自然変換」であることを理解しよう。 Haskellとモナドだけに関連しても、 1.Hask圏 (これが議論の基礎となる) 2.Hask圏の自己関手の圏 EndoFunct(Hask) 3.Hask圏のモナド(Hask上の自己関手の一種)Fが作り出す Kleisli圏 という最低でも3つの「圏論的視点」がある。視点を変えると名前が変わったりするので要注意。 たとえば、Hask圏での「自己関手」は EndoFunct(Hask) という圏では「対象」となる。 また、「Hask圏における自己関手を結ぶ自然変換」は EndoFunct(Hask) では「射」となる。 マクレーンの本は「あれも書かなきゃこれも書かなきゃ」って感じでどんどん話が進むし 証明は読者に任せたwwwってノリの箇所も結構あるので一度きちんと自分で整理してみることを 勧める。
|