関数型プログラミング言語Haskell Part34 (667レス)
関数型プログラミング言語Haskell Part34 http://mevius.5ch.net/test/read.cgi/tech/1639713446/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
401: デフォルトの名無しさん [sage] 2024/10/01(火) 23:25:15.70 ID:syLuNokt >>396 > 2番目もマルチスレッドとか最適化には役に立ちそうではある それもう一人のsimonが取り組んだけどモナドは否定された http://mevius.5ch.net/test/read.cgi/tech/1639713446/401
402: デフォルトの名無しさん [sage] 2024/10/02(水) 05:35:22.65 ID:OAhBXB+m やっぱり数学的に表現してみただけってことか まぁ実際のプログラミングに利益はないわな http://mevius.5ch.net/test/read.cgi/tech/1639713446/402
403: デフォルトの名無しさん [] 2024/10/02(水) 07:50:08.23 ID:AFS53MaU >>400 よくよく考えたら特別な事じゃないんだけど、普通のプログラミング言語でも大文字・小文字の変換関数を自作するってなったら、文字をInt型に変換して処理する。 それって文字の圏で直接大文字小文字の変換するを作れない場合、一旦整数の圏を経由する関数を作る。 A(a) → B(a) ↓ ↓ A(A) → B(A) 可換図のA(a) → B(a)の逆射が作れれば、B(a) → B(A)が作れる。 ほら、分かってみれば「なーんだ。そんなことか」でしょ? http://mevius.5ch.net/test/read.cgi/tech/1639713446/403
404: デフォルトの名無しさん [] 2024/10/02(水) 07:53:32.91 ID:AFS53MaU この場合、整数同士の足し算に対応する、文字同士の足し算が作れる。 (ただし、整数と文字列で集合の大きさを合わせる必要がある。0-25とか1-26とかで循環する集合) http://mevius.5ch.net/test/read.cgi/tech/1639713446/404
405: デフォルトの名無しさん [] 2024/10/02(水) 07:55:35.67 ID:AFS53MaU んで、プログラマーはいちいち集合を合わせないで、エラー処理だったり循環リスト作ったりで対応するわけだぬ。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/405
406: デフォルトの名無しさん [sage] 2024/10/02(水) 08:30:24.33 ID:VSz9kg2E 数学の圏論テキストではカリー化の操作は良く使うが、カリー化の名前を付けて引用することはまず無いね。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/406
407: デフォルトの名無しさん [sage] 2024/10/02(水) 08:47:20.09 ID:wonXK6QE >>403 大文字小文字の変換が自然変換になる事を(Haskellの例で)証明して、と言う話 (自然変換が何かは分かっているで、直感的に違うと思ったから訊いた) http://mevius.5ch.net/test/read.cgi/tech/1639713446/407
408: デフォルトの名無しさん [sage] 2024/10/02(水) 09:21:51.83 ID:ZmuRtoMU 大文字の文字列の型から小文字の文字列の型への変換と考えると簡単 http://mevius.5ch.net/test/read.cgi/tech/1639713446/408
409: デフォルトの名無しさん [sage] 2024/10/02(水) 09:24:29.51 ID:ZmuRtoMU リスト関手から集合関手への自然変換も分かりやすい。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/409
410: デフォルトの名無しさん [sage] 2024/10/02(水) 10:25:28.13 ID:xCLOcr8o すまん嘘を書いた 自然変換では無くリストの圏から集合の圏への関手だった http://mevius.5ch.net/test/read.cgi/tech/1639713446/410
411: デフォルトの名無しさん [sage] 2024/10/02(水) 10:27:20.94 ID:ZmuRtoMU 大文字列、小文字列も同様に間違い http://mevius.5ch.net/test/read.cgi/tech/1639713446/411
412: デフォルトの名無しさん [sage] 2024/10/02(水) 16:24:48.26 ID:H02uk4bf >>402 ただの記号で表現したら「0の逆数」とかいう表現を禁止するのが難しい ただの記号ではない方がベター http://mevius.5ch.net/test/read.cgi/tech/1639713446/412
413: デフォルトの名無しさん [] 2024/10/02(水) 20:27:37.99 ID:AFS53MaU >>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型を圏とみれば同じ。 可換にするのは面倒くさい上に効率悪いけど、そういう関手を作ろうと思えば作れる。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/413
414: デフォルトの名無しさん [] 2024/10/02(水) 20:45:45.19 ID:AFS53MaU 可換図にすると Char(小文字) ⇗ Int ⇑toL ⇓toU ⇘ Char(大文字) ここで、小文字→Int, 大文字→Intが作れればtoLower, toUpperを直接作らなくても、関手の合成で作れる。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/414
415: デフォルトの名無しさん [sage] 2024/10/02(水) 20:53:28.38 ID:4E8lSXKR 出番ですよ >>399 http://mevius.5ch.net/test/read.cgi/tech/1639713446/415
416: デフォルトの名無しさん [] 2024/10/02(水) 21:03:02.82 ID:AFS53MaU 圏論の地平線でも書かれていたけど、圏論は直接的に役に立つというより、発想の転換の源泉になるそうな。 (なので、別に圏論分かったから偉いとかない) http://mevius.5ch.net/test/read.cgi/tech/1639713446/416
417: デフォルトの名無しさん [sage] 2024/10/02(水) 21:18:36.03 ID:JUMm5MLB 数学の研究には有用かも知れないが プログラミングで 直接役に立つようなことはまず無い http://mevius.5ch.net/test/read.cgi/tech/1639713446/417
418: デフォルトの名無しさん [sage] 2024/10/02(水) 21:42:50.80 ID:Xrjxo4NT どっ白け http://mevius.5ch.net/test/read.cgi/tech/1639713446/418
419: デフォルトの名無しさん [] 2024/10/02(水) 21:51:30.73 ID:OPLMo7z3 プログラミング言語もどんどん数学に寄せているし、上のカキコみたいにプログラムの記述を そのまま数学的対象とみなせるように改造していってると思う。本来は別物と考えるべきだと思う。 数学の研究といってもプログラム意味論の研究で、プログラムを数学の世界に写像したら どう表現できるかということを研究していると言えるんじゃないかと思う。 数学の世界には、式の評価途中に発生する副作用といった概念がないので、現実のプログラムを そのまま数学の世界に移そうと思ってもできないことの方が多い。 計算効果を圏論的に表現できたというのは、そういうプログラミング言語の数学化の一端みたいな もんだと思う。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/419
420: デフォルトの名無しさん [sage] 2024/10/02(水) 22:00:14.12 ID:YWEZQEUD 副作用ってどうでもよくね Haskellとかだとそもそも副作用ないし http://mevius.5ch.net/test/read.cgi/tech/1639713446/420
421: デフォルトの名無しさん [] 2024/10/02(水) 22:12:34.31 ID:OPLMo7z3 現実のプログラムだと式を評価する途中で発生する副作用というのは普通だけれど、 これを表示的意味論、操作的意味論で数学の世界に写そうと思うと途端に難しくなる。 数学で式の途中に文字列をディスプレイに映し出す、みたいな概念はないから。 それを整理して副作用と呼んでも差し支えない概念を提唱してHaskellに実装しているんだよ。 実際、IOモナドの圏論的定式みるとこれが副作用?という表式してる。 全部後回しにしてフラッシュするというアイディアみたい。副作用をプログラムの最終局面で 実行しているから、式の評価途中の参照透明性も壊さない。なるほど、って感じ。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/421
422: デフォルトの名無しさん [sage] 2024/10/02(水) 22:20:07.75 ID:sFAdPyYV ID:OPLMo7z3 = ID:AFS53MaU 本人か同レベル 複おじってレベル http://mevius.5ch.net/test/read.cgi/tech/1639713446/422
423: デフォルトの名無しさん [sage] 2024/10/02(水) 22:24:19.37 ID:YWEZQEUD 途端に難しくなるか? 副作用のない計算に変換する手順が教科書に書いてあるはずだが? http://mevius.5ch.net/test/read.cgi/tech/1639713446/423
424: デフォルトの名無しさん [] 2024/10/02(水) 22:29:49.51 ID:OPLMo7z3 >>422 別の人。自分ならプログラムの記述を一回数学の世界に写すし。 >>423 副作用のある数学的関数ってある? プログラム→数学 に変換するんだぜ。 副作用のない計算に変換する手順が数学の本に書いてあんの? http://mevius.5ch.net/test/read.cgi/tech/1639713446/424
425: デフォルトの名無しさん [sage] 2024/10/02(水) 22:43:26.42 ID:+kVmY7U4 >>424 別人とのことなので便乗 ID:OPLMo7z3 は ID:AFS53MaU が > 大文字小文字の変換が自然変換になる事を(Haskellの例で)証明して と問われて >>413,414 を出してきたのは数学的証明だと思ってるの? http://mevius.5ch.net/test/read.cgi/tech/1639713446/425
426: デフォルトの名無しさん [sage] 2024/10/02(水) 22:46:45.28 ID:+kVmY7U4 >>424 或いはもっと直接的に、>>424は「大文字小文字の変換が自然変換」の真偽をどう考えているの? http://mevius.5ch.net/test/read.cgi/tech/1639713446/426
427: デフォルトの名無しさん [] 2024/10/02(水) 22:51:00.95 ID:OPLMo7z3 定義が何もないのに何も言えるわけないじゃん。 数学でこういうものを定義します、これをプログラムのこれこれと対応付けます。 てプロセスないじゃん。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/427
428: デフォルトの名無しさん [sage] 2024/10/02(水) 22:52:03.28 ID:YWEZQEUD >>424 先に副作用のないプログラムに変換するって言ってるんですけど Haskellなら最初から副作用がないからそのままでいいけど プログラミング言語の理論の本ならどれにでも書いてないか? http://mevius.5ch.net/test/read.cgi/tech/1639713446/428
429: デフォルトの名無しさん [sage] 2024/10/02(水) 22:55:13.15 ID:+kVmY7U4 >>427 了解 >>422の指摘通りだと納得しました http://mevius.5ch.net/test/read.cgi/tech/1639713446/429
430: デフォルトの名無しさん [] 2024/10/02(水) 22:56:24.21 ID:OPLMo7z3 いや。プログラム意味論の本結構探し回ったけど副作用の記述は漠然としてて 扱えないわけじゃないらしいけど、具体的な変換なんて見たことない。 ちょうど伝統的なプログラム意味論で副作用どう扱われているか調べているんだ。 なんて本に書いてありましたか? http://mevius.5ch.net/test/read.cgi/tech/1639713446/430
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 237 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.014s