関数型プログラミング言語Haskell Part34 (667レス)
上下前次1-新
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)が作れる。
ほら、分かってみれば「なーんだ。そんなことか」でしょ?
404: 2024/10/02(水)07:53 ID:AFS53MaU(2/6) AAS
この場合、整数同士の足し算に対応する、文字同士の足し算が作れる。
(ただし、整数と文字列で集合の大きさを合わせる必要がある。0-25とか1-26とかで循環する集合)
405: 2024/10/02(水)07:55 ID:AFS53MaU(3/6) AAS
んで、プログラマーはいちいち集合を合わせないで、エラー処理だったり循環リスト作ったりで対応するわけだぬ。
406: 2024/10/02(水)08:30 ID:VSz9kg2E(1) AAS
数学の圏論テキストではカリー化の操作は良く使うが、カリー化の名前を付けて引用することはまず無いね。
407(1): 2024/10/02(水)08:47 ID:wonXK6QE(1) AAS
>>403
大文字小文字の変換が自然変換になる事を(Haskellの例で)証明して、と言う話
(自然変換が何かは分かっているで、直感的に違うと思ったから訊いた)
408: 2024/10/02(水)09:21 ID:ZmuRtoMU(1/3) AAS
大文字の文字列の型から小文字の文字列の型への変換と考えると簡単
409: 2024/10/02(水)09:24 ID:ZmuRtoMU(2/3) AAS
リスト関手から集合関手への自然変換も分かりやすい。
410: 2024/10/02(水)10:25 ID:xCLOcr8o(1) AAS
すまん嘘を書いた
自然変換では無くリストの圏から集合の圏への関手だった
411: 2024/10/02(水)10:27 ID:ZmuRtoMU(3/3) AAS
大文字列、小文字列も同様に間違い
412: 2024/10/02(水)16:24 ID:H02uk4bf(1) AAS
>>402
ただの記号で表現したら「0の逆数」とかいう表現を禁止するのが難しい
ただの記号ではない方がベター
413(1): 2024/10/02(水)20:27 ID:AFS53MaU(4/6) AAS
>>407
圏論の自然変換だと文字コード前提じゃないので、[0..25] = ['a'..'z'] = ['A'..'Z']ってする。
んで、大文字と小文字は同じ文字の圏、[0..25]は自然数の圏とする。
lCharToInt c = (length.takeWhile (c /=)) ['a'..'z'] -- 小文字からIntへの変換(関手)
uCharToInt c = (length.takeWhile (c /=)) ['A'..'Z'] -- 大文字からIntへの変換(関手)
toLChar = (['a'..'z']!!) -- Intから小文字への変換(関手)
toUChar = (['A'..'Z']!!) -- Intから大文字への変換(関手)
mytoLower = toLChar.uCharToInt -- 大文字から小文字への変換(自然変換)
mytoUpper = toUChar.lCharToInt -- 小文字から大文字への変換(自然変換)
でも、普通のプログラミング言語のtoLower, toUpperも、Char型を圏とみれば同じ。
省1
414(1): 2024/10/02(水)20:45 ID:AFS53MaU(5/6) AAS
可換図にすると
Char(小文字)
⇗
Int ⇑toL ⇓toU
⇘
Char(大文字)
ここで、小文字→Int, 大文字→Intが作れればtoLower, toUpperを直接作らなくても、関手の合成で作れる。
415: 2024/10/02(水)20:53 ID:4E8lSXKR(1) AAS
出番ですよ >>399
416: 2024/10/02(水)21:03 ID:AFS53MaU(6/6) AAS
圏論の地平線でも書かれていたけど、圏論は直接的に役に立つというより、発想の転換の源泉になるそうな。
(なので、別に圏論分かったから偉いとかない)
417: 2024/10/02(水)21:18 ID:JUMm5MLB(1/2) AAS
数学の研究には有用かも知れないが
プログラミングで
直接役に立つようなことはまず無い
上下前次1-新書関写板覧索設栞歴
あと 250 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.016s