24/11/07 22:12:19.74 FpXO3cRO.net
示的意味論
URLリンク(repository.kulib.kyoto-u.ac.jp)
57:132人目の素数さん
24/11/07 22:13:16.34 GwHDNA0i.net
こちらは私個人は疑惑的ですが、圏論の道案内という本では
MaybeモナドやListモナドの空の状態を意味するNothingや[]が
例外を一か所にまとめるという点で例外処理より優秀とか書いてましたね。
これもモナドの効果でしょう。
-- 1度Nothingが返ったら、後に何をしてもずっとNothingになる
Just 1 >>= Just.(+1) >> Nothing >>= Just.(+2) = Nothing
58:132人目の素数さん
24/11/07 22:15:47.47 GuBZ+e11.net
「モナドって何なの?」=>計算効果付きプログラムが圏を成すための合成機構。その条件がモナド則
多分なんか勘違いしてる
>・副作用のある関数を使っても参照透明性が保たれている
>・型によって純粋関数と副作用のある関数を分離できる
参照透過性を保ちつつ副作用のあるプログラムは別にモナドなくても作れる。合成ができないだけで。
型も大事ではあるけれど、圏としてつまり数学的構造として純粋関数と計算効果付きプログラムを分離しているのはモナド則なんだよ。
>数学書って「定義」→「定理」→「証明」の繰り返しで
数学書読んでもわかんないよ。あれって数学云々の前の前提の部分が肝心だから納得感欲しいなら元論文読んだ方がいいよ。
数学的には圏を成すかなさないかだけだと思うし。
59:132人目の素数さん
24/11/07 22:28:02.71 FpXO3cRO.net
>>56
表示的意味論
60:132人目の素数さん
24/11/07 22:37:11.30 GwHDNA0i.net
ふうむ…。
私の勘違いのもとは、そちらが「計算効果付きプログラム」としきりに書いているところが鍵な気がしますね。
元論文というのは >56 のPDFでしょうか?
勉強させていただきます。
それにしても、やっぱり一般の人がモナドを理解って難しい…。
>51 って、そちらの言う
計算効果T付きプログラム:
p :: A -> T B、q :: B -> T C
とすると合成は
q `bind` p :: A -> T C
結合律も満たす。
の動きをそのままTを入れ物の様なものとして書いただけなんですけどね…。
この説明じゃダメなんかなぁ…。
でも、「圏を成すための合成機構。その条件がモナド則」か。
うん、そこは分かってて、でも結局モナドって何者?って感じる…。
ええい、とりあえず元論文読ませていただきます!
61:132人目の素数さん
24/11/07 22:45:43.57 GuBZ+e11.net
いや、>>56はなんかよくわからん人のレス。毒にも薬にもならんと思う。
元論文としては、
URLリンク(person.dibris.unige.it)
URLリンク(person.dibris.unige.it)
URLリンク(www.cs.cmu.edu)
あたりだけど、読んでもよくわかんないと思う(主に動機の面で。1番目は動機が比較的書いてあるけどそれでも読みにくいと思う)。
回り道を覚悟するならHaskellつながりでPaul Hudakの
URLリンク(citeseerx.ist.psu.edu)
を一度読んでみるとあれ?ってなると思う。
62:132人目の素数さん
24/11/07 22:47:55.83 GwHDNA0i.net
おおう。
ありがとうございます。
読ませていただきます。
63:132人目の素数さん
24/11/07 22:52:40.64 GuBZ+e11.net
ちなみに「計算効果」というのはあとから与えられた名称なので元論文には出てこない。相当するのはnotion of computationという概念かな。
圏論使った理論なんだからまず圏なさないといけないじゃん。普通は圏を成さないプログラムを圏にしようと思うとモナドが必要になる、では納得できないもん?
ちなみに動作機構の解釈とか、do表記の解釈とかは無いよ。あくまで表示的意味論を構造化するもんだから。そういうのは副産物的に便利なだけだと思う。
64:132人目の素数さん
24/11/08 18:49:49.67 cKORtqw5.net
>>63
「モナドが必要になる」は分かるんですよ。
純粋数学におけるモナドってどういう位置づけ?みたいな感覚でしょうか。
多分、純粋数学のどこでモナドって現れるの?が聞きたいのかも。
具体例がいくつかあれば、イメージ湧く気がします。
モノイドが数え上げや繰り返しによく表れる構造。みたいなのが欲しいのかも知れません。
65:132人目の素数さん
24/11/08 19:39:05.12 BwbJKvDJ.net
そんなもん知るかよ。要求するレベルが高すぎ。自分で言ってること冷静に考えた方がいいぞ。
理論計算機科学者の専門家でもそれ満足できる人なんてほとんどいないと思う。
絶対そこまで理解いらないと思う。方向性がおかしいと思う。
でもマジでやりたいなら、計算効果じゃなくて代数的効果(algebraic effects)を勉強すべき
Lawvereの代数的理論から見たモナドを理解しないとモナドに納得できないみたいなことを言ってる。
普通に考えて専門家でもそこまで理解してないって。
66:132人目の素数さん
24/11/08 21:44:16.50 cKORtqw5.net
でも多分、Haskell勉強してる人ってレベルを問わず、そういう要求してるんですよね。(もちろん、私も含めて)
それでモヤモヤして >53 みたいな例えで終わるか、そこまでもイメージできずにHaskellアンチに回るか。
せめて、モノイドの具体例みたいに、モナドの具体例があれば…。
(構造的にはモノイドと似てるので、モノイドの適用範囲外の対象でモノイド的な動きをしてそうなんですが…)
例えば逐次処理は数え上げっぽい動きと言えるけど、モノイドの対象じゃないからモナドの具体例(?)。
とか、そういうのが数学でもモナドの具体例で無いでしょうか?
67:132人目の素数さん
24/11/08 22:14:49.39 BwbJKvDJ.net
モナド、モナド言う割にあんま大して調べてないんじゃね?
Haskellのモナドは数学のモナドと直接対応しないぞ。
つまりモノイドとのメタファは直接は成り立たない。
直接対応するのはKleisli圏。Haskellのモナドの三つ組はKleisli tripleというのに対応する。
URLリンク(www.ipsj.or.jp)
具体例知りたければ、数学のKleisli圏調べればいいんじゃね。でも、もともとの出自からして具体的な
ものはないんじゃないか。
もしかして常にControl.Monad モジュール?だったかインポートして
>>=の代わりに全部joinでプログラム組んでいるという特殊なHaskeller?
>>=の代わりにjoin使えば、モナドは文字通り数学のモナドと対応するよ。
68:132人目の素数さん
24/11/08 23:29:54.12 MIL/reCc.net
オペラッドもカリー化も
多変数写像を一変数写像にする枠組みに使えないだろうか?という共通意識を持ってそう。
69:132人目の素数さん
24/11/09 08:30:04.26 FY91cDX6.net
>>67
>Haskellのモナドは数学のモナドと直接対応しないぞ。
これはいい事を聞きました。
joinですね。やってみます。
>つまりモノイドとのメタファは直接は成り立たない。
モノイドとのメタファは圏論の基礎に三角図式がどっちにもあったし、どちらも結合法則を満たす。
モノイドの条件は結合法則を満たす事のみって事で、勝手に独自に思ったものです。
(なので、自分の中では群も環も体もモノイドでもある)
>数学のKleisli圏調べればいいんじゃね。
調べてみます。
70:132人目の素数さん
24/11/09 09:46:20.14 gP4Cl+Vg.net
カレーはバーモンドカレーに限る
71:132人目の素数さん
24/11/09 18:05:52.30 4Q5b7QAO.net
やっぱ知らなかったか。そりゃ理解できないわ。
Haskellerに多いんじゃない?直接対応するのKleisli tripleってこと知らない人。
圏論の基礎の初めのあたりにモナドとモノイドとの対比が載ってるから広がったんだと思うけど、
モノイド知っても何か足しになるとは思えない。
そういえば、『圏論の歩き方』にKleisli圏の例が載っていた気がする。代数じゃなくてたしか確率だったけど。
72:132人目の素数さん
24/11/09 18:54:40.41 FY91cDX6.net
>>71
>Haskellerに多いんじゃない?直接対応するのKleisli tripleってこと知らない人。
多いと思います。
圏論の入門書買ってまで勉強する人は少ないですし、数学が理解できる人もさらに少ないので。
私は数学理解できなかったので、今数学の学び直しからです。
(アーベル圏のアーベルって何?状態で、アーベル = 可換と群論で知った感じです)
歩き方の方ですか、道案内の方は持ってるのですが、著者が同じなので読み直そうかな。
73:132人目の素数さん
24/11/10 15:35:28.43 KGofMs6x.net
関数型プログラミング言語Haskell Part34
スレリンク(tech板)
74:132人目の素数さん
24/11/10 15:36:14.60 KGofMs6x.net
「数学」をプログラミングするには
スレリンク(tech板)
75:132人目の素数さん
24/11/20 18:01:21.84 gLlwGP4V.net
まず大前提としてHaskellをやるのに圏論は必要ないし得るものもないってところから理解しよう
76:132人目の素数さん
24/11/20 20:29:01.13 L0XHfTdv.net
>>1
必要ない。ラムダ計算論は知っておいていいとは思うが、オブジェクト志向に役立つ
数学理論というのは特にないだろう
それよりも具体的に作りたいソフトウェアとコンパイルを意識しながら簡潔なコーディングを考える訓練をしたほうがいい
77:132人目の素数さん
24/11/21 07:45:36.85 jE2BR9oB.net
すんません、オブジェクト指向ってなんですか?
78:132人目の素数さん
24/11/23 11:30:35.70 ZZ2Yx3Ws.net
最新最強の言語Rustを学べば
オブジェクト指向や関数型プログラミングが何かの議論も意味を成さなくなる
79:132人目の素数さん
24/11/23 12:08:01.22 GI4x0ZEB.net
何をするか、どんな処理をするかではなく
どんなものを処理していくのかを起点にコードを整理していく技術
80:132人目の素数さん
24/11/23 15:51:33.83 cGdJuX+x.net
一階論理は完全だけど二階論理は不完全である
81:132人目の素数さん
24/11/25 16:05:29.16 Jt/hI90E.net
すみません、ちょっと内々に聞きたいことがあるのですが、
とある会社が詐欺をしている証拠を発見しまして、あまり公には書けない内容なのですが
このスレにseoとドメインについて多少知識のある方いますか?
もし質問に答えていただける方居ましたら、メール欄に使い捨てのメルアドでも貼っていただければ、そちらにメールさせていただきますので
使い捨てメアドはワンタイムメールってのが使いやすいです
よろしくお願いいたします
82:132人目の素数さん
24/11/25 16:43:31.86 Jt/hI90E.net
>>81
本当は専門スレの方で質問したいんですけど、犯人がそっちの方のスレとかも見てるらしいので
そちらでは質問しませんでした
83:132人目の素数さん
24/12/06 03:58:04.01 psUqlDz4.net
スレチだよ
専門スレに行け