関数型プログラミング言語Haskell Part34 (667レス)
1-

374: 2024/09/30(月)00:59 ID:Kh4w53R0(2/2) AAS
>>372
適当じゃない。
モナドは(主に)逐次処理に現れる構造なので、Haskellのような遅延評価で逐次処理自体を作らないといけない(逐次処理をエミュレートするためのモナド)言語でない限り、意識することすらない。
(だからC言語で言う i = 0; の「;」とか言われる)
375: 2024/09/30(月)03:08 ID:g+sPZSfB(1) AAS
>>372
沈黙させる努力をするよりも(全ての)人の話を聞くのをサボる方が良い
努力は時間がかかる
一瞬で報われるものは努力ではない
376
(1): 2024/09/30(月)12:40 ID:+8KmLjt4(1) AAS
圏論の極々一部のモナドを主語をデカくして圏論ガーとか言ってる人は何も分かってないんだなと思うけどね
俺みたいに数学かじってた人からすると
圏論を勉強すると「あ、この概念はこの分野のこれのことか」ってわかるけど
そうじゃない人は何のことを言ってるのかわからんと思う
専門家でも自分の担当外の圏なんて知らないのに
圏論という括りで語ろうとする人はそういうのすら理解してない
377: 2024/09/30(月)13:52 ID:CD9F70e/(1) AAS
やっと普通の人が出てきて安心した
378: 2024/09/30(月)13:59 ID:pkON+G7q(1) AAS
>>376
数学者向けの圏論の教科書の応用、具体例は全て数学。
数学知らない人が読んでも分かるわけがない。
応用、具体例、演習をCSの分野から採った教科書が望まれるが、書くのが難しい上に面白くするのも困難。
大体CSすらちゃんと修めてないエンジニアはやはり読めない。
CS自体ベースに位相、代数、グラフ理論と数学使うし。
379: 2024/09/30(月)14:09 ID:rwCIuc1C(1) AAS
趣味でやる人に良くいるんだよね。
応用各分野に囚われずに、圏論そのものを学習したい、一般圏論を研究したいって人。
これは数学で言うと、集合論と同じく数学基礎論の分野。
380: 2024/09/30(月)19:05 ID:8C0MP56i(1/3) AAS
操作的意味論とか表示的意味論でプログラムを数学の話にして、その数学を圏論で整理するって話
だからアーベル圏とか具体的な圏はあんま出てこない。
やるとすれば
デカルト閉圏:ランベックがλ計算のモデルになると発見して関数型プログラミング的に重要
クライスリ圏:Moggiが計算効果をカプセル化したときの根拠の圏
ローベア理論:代数的効果をちゃんと理解するときは必要らしい。操作的意味論と表示的意味論と同じようにモナドの理論と妥当性が成り立つようだ。
ぐらいじゃね。
381: 2024/09/30(月)21:09 ID:CVtPTYpb(1/2) AAS
じゃあラムダ計算(のモデル)だけを考えよう
タプルや代数的データ型は使わない
それでもモナドの具体例を作れるのを知ってるのが専門バカ
知らないのが一般国民だ
382: 2024/09/30(月)21:29 ID:8C0MP56i(2/3) AAS
一般国民。
λ計算のモデルでモナド作ってなにかいいことあるの?計算効果結局表現できないんじゃ?
拡張してcomputational lambda calculusやるって話?
383: 2024/09/30(月)21:47 ID:CVtPTYpb(2/2) AAS
ないんじゃないか
ただ「具体例を出せば、いいことがある」とは誰も言ってない
というファクトをチェックするのは悪いことではない
384: 2024/09/30(月)21:53 ID:8C0MP56i(3/3) AAS
いいこと(メリット)があるから具体例が作られると思うんだが。
それは単に具体例の適用が間違ってるって話じゃね?
なんとなく作れるから群構造作ってみましたとかとか目的不在で作ったらそら何がいいかわからんし。
モナドだったら、各計算効果を圏(クライスリ圏)の中に閉じ込めることに成功しました(カプセル化)。
計算効果は強モナドの構造を取っているようです(計算効果の研究のとっかかり)。
みたいないいことあるから流行るんでしょ。
385: 2024/10/01(火)04:04 ID:PZ96E01/(1/2) AAS
別にそれ圏論を持ち出す必要ないよね
ハイおしまい
386: 2024/10/01(火)09:39 ID:KbL1rq/V(1/2) AAS
>なんとなく作れるから群構造作ってみました
ルービックキューブのことか
387: 2024/10/01(火)09:46 ID:y60InQ2q(1) AAS
数学屋さんもね
研究では圏を使うが
学生に教えるときは
圏を記述に使わず教えたりする
388: 2024/10/01(火)19:23 ID:7kn4RxVI(1/2) AAS
圏論の話題になったから振ったのに。まあいいよ。
圏論根拠で(ソフトウェア工学的にじゃなくて)数学的にカプセル化が実現されてるってすごい
ことだと思うけどね。

>ルービックキューブのことか
ルービックキューブ解くという目的あるんなら構築する意味あるんじゃない。
389: 2024/10/01(火)19:34 ID:YZm15ve9(1) AAS
群持ち出したところで解けないよ
390
(1): 2024/10/01(火)20:18 ID:PZ96E01/(2/2) AAS
圏論がプログラミングの問題解決に寄与するわけないのにね
ただ当てはめてみたってだけのことを過大評価しすぎ
391
(1): 2024/10/01(火)20:52 ID:u1x9FxNe(1) AAS
雪田修一の「圏論入門 Haskellで計算する 具体例から」ってどうなん?
392: 2024/10/01(火)21:10 ID:YpLGkLDy(1) AAS
板チ
目的と手段を混同したら予選敗退
393: 2024/10/01(火)21:16 ID:7kn4RxVI(2/2) AAS
どうなんって何を知るのに?出たときに立ち読みしただけだけど。
394: 2024/10/01(火)21:16 ID:Ig6Tf0ue(1/2) AAS
>>391
青本と似てて定義の後に具体例を出すみたいな感じだけど
具体例が数学科の人じゃないとわからない内容ばかりなので
結局個別の分野をやらないと理解できないと思う
395: 2024/10/01(火)21:38 ID:Ig6Tf0ue(2/2) AAS
圏論をやりたいならまず代数学をやるべき
それだけでだいぶ見通しが違う
396
(1): 2024/10/01(火)21:42 ID:4kH314XL(1/3) AAS
>>390
モナドの効用で自分の把握してるのは

・数学やHaskellの様な遅延評価の場合、逐次処理を表現できる
(これは変数を使いまわさない場合は、関数合成で十分だが、変数を使いまわすときはモナドじゃないと使いまわせない)

・副作用のある関数を使っても参照透明性は保たれている

・モナドは入れ物前提の概念なので、空の状態を使って例外処理をまとめることができる

正直、普通のプログラミング言語にも役立ちそうな3つ目は実感はしてないけど、ネットで例外処理よりモナドの方が優秀っぽい記事を読んだ
省2
397
(1): 2024/10/01(火)22:05 ID:4kH314XL(2/3) AAS
圏論全体だと…当たり前のことを構造として研究してるだけなので、圏論というよりはHaskellの型クラスとの合わせ技で関手(Functor)の方がfmap的なのを他の言語にも導入すれば役に立つかも

圏論の関手を一言で言えば(関数も含めた)型変換
(Hakellだと入れ物前提にすることで、関数ごと型変換を実現。本来はもっと柔軟)

自然変換は一言で言えば単位変換とか、大文字小文字の変換
398
(1): 2024/10/01(火)22:16 ID:4kH314XL(3/3) AAS
モノイドは条件が結合法則だけなので、ほぼ結合法則そのものがモノイド
(その割には繰り返しとか数え上げに現れる構造)

そしてモナドも構造はそっくりなので、入れ物前提のモノイドとも考えられる
(モナドの再帰はループ処理でスタックを消費しないし、数え上げは逐次処理と考えられる)
399
(2): 2024/10/01(火)23:08 ID:KbL1rq/V(2/2) AAS
バグを無くすこと自体が目的になりがちなのが数学とプログラムなんだよね
真の目的のため、デバッグを二の次にするやつが正しいと言われても・・・
それって証明とかあるんですか
400
(1): 2024/10/01(火)23:21 ID:syLuNokt(1/2) AAS
>>397
大文字小文字の変換が自然変換の部分kwsk

>>399
目的と手段を区別したら、手段は二の次だと言うのは予選敗退者のポエム
401: 2024/10/01(火)23:25 ID:syLuNokt(2/2) AAS
>>396
> 2番目もマルチスレッドとか最適化には役に立ちそうではある
それもう一人のsimonが取り組んだけどモナドは否定された
402
(1): 2024/10/02(水)05:35 ID:OAhBXB+m(1) AAS
やっぱり数学的に表現してみただけってことか
まぁ実際のプログラミングに利益はないわな
403
(1): 2024/10/02(水)07:50 ID:AFS53MaU(1/6) AAS
>>400
よくよく考えたら特別な事じゃないんだけど、普通のプログラミング言語でも大文字・小文字の変換関数を自作するってなったら、文字をInt型に変換して処理する。

それって文字の圏で直接大文字小文字の変換するを作れない場合、一旦整数の圏を経由する関数を作る。

A(a) → B(a)
↓ ↓
A(A) → B(A)

可換図のA(a) → B(a)の逆射が作れれば、B(a) → B(A)が作れる。
ほら、分かってみれば「なーんだ。そんなことか」でしょ?
1-
あと 264 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.017s