関数型プログラミング言語Haskell Part34 (667レス)
関数型プログラミング言語Haskell Part34 http://mevius.5ch.net/test/read.cgi/tech/1639713446/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
473: デフォルトの名無しさん [sage] 2024/10/04(金) 20:30:15.44 ID:SclsbEZF 日を跨ぐつもりならコテハンでも付けてくれんか 追えん http://mevius.5ch.net/test/read.cgi/tech/1639713446/473
474: デフォルトの名無しさん [] 2024/10/04(金) 20:44:30.01 ID:tixO3LDq >>472 だからそれはわかっているって。評価途中では実際の入出力はせず指示書だか値のリストだけ作成して 参照透過性を保証して、参照透過性が要求されなくなったプログラムの最終段階でリストに従って 入出力を実行するような仕組みがあれば、参照透過性を保ったまま入出力はできるという話でしょ。 それを数学的にどう正当化するかという話を書いているんだって。 >>473 水曜日あたりからだからそんな分量ないよ。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/474
475: デフォルトの名無しさん [sage] 2024/10/04(金) 20:49:17.68 ID:WSIC8Xt5 >>474 どこが正当化されてないのか意味不明なんだけど ていうか正当化って何? http://mevius.5ch.net/test/read.cgi/tech/1639713446/475
476: デフォルトの名無しさん [] 2024/10/04(金) 20:51:48.70 ID:tixO3LDq だから、入出力がある数学的関数なんてないじゃん。 入出力があるプログラムを数学的に表現しようと思っても詰むからどうしようって話。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/476
477: デフォルトの名無しさん [sage] 2024/10/04(金) 20:57:28.69 ID:6lZW+X9H こんなところで長文書くのはやめてもろて 読む価値があるものならzennとかnoteに書けば? 関数型言語界隈の人たちがクソミソにレビューしてくれるよ http://mevius.5ch.net/test/read.cgi/tech/1639713446/477
478: デフォルトの名無しさん [sage] 2024/10/04(金) 20:58:08.93 ID:WSIC8Xt5 >>476 型付きラムダ計算の時点で数学的に表現されてるだろ… 意味不明すぎる http://mevius.5ch.net/test/read.cgi/tech/1639713446/478
479: デフォルトの名無しさん [sage] 2024/10/04(金) 21:00:48.64 ID:qBjLuAvO メインの入力とメインの出力は数学にもある 主じゃないやつを副作用といってる http://mevius.5ch.net/test/read.cgi/tech/1639713446/479
480: デフォルトの名無しさん [] 2024/10/04(金) 21:11:30.04 ID:tixO3LDq >>478 なるほどそう考えていたのか。全部λ計算でアセンブルすりゃ数学的に還元できるだろうってわけね。 でもそうだとすると文字列を表示するハードウェアの部分はどう還元するの? >>479 よくわかんない。具体的に言うとどういうのある? http://mevius.5ch.net/test/read.cgi/tech/1639713446/480
481: デフォルトの名無しさん [] 2024/10/04(金) 21:11:31.21 ID:tixO3LDq >>478 なるほどそう考えていたのか。全部λ計算でアセンブルすりゃ数学的に還元できるだろうってわけね。 でもそうだとすると文字列を表示するハードウェアの部分はどう還元するの? >>479 よくわかんない。具体的に言うとどういうのある? http://mevius.5ch.net/test/read.cgi/tech/1639713446/481
482: デフォルトの名無しさん [sage] 2024/10/04(金) 21:18:24.66 ID:WSIC8Xt5 >>480 アセンブルって何? 後半も何言ってるのかちゃんと分かるように書いて http://mevius.5ch.net/test/read.cgi/tech/1639713446/482
483: デフォルトの名無しさん [sage] 2024/10/04(金) 21:25:06.50 ID:WSIC8Xt5 そうだよ、こんなとこじゃなくてzennとかに煽った感じのタイトルつけて炎上する記事書いてコメントもらって来いよ http://mevius.5ch.net/test/read.cgi/tech/1639713446/483
484: デフォルトの名無しさん [] 2024/10/04(金) 21:28:05.10 ID:tixO3LDq λ計算を機械語とかアセンブラと見立てて、λ計算ですべて数学世界を組み立てれば、 入出力がある数学的関数も定義できるだろうから、あえて数学的正当性なんて与えようとする 理由がわからない、ということだろうと思った。 プログラムの部分は全てλ計算で組み立てれば完全に同じものが作れると思っているということ だけれども、じゃあ文字列をディスプレイに表示するというプログラムの構成要素である ディスプレイはハードウェア部分だけれども、それはλ計算で組み立てるという範疇にはいるんですか? 入らないなら、なにか数学的概念を持ち出してきてそれに対応付けるということをしないといけないんじゃ ないですか? という趣旨のことを書いた。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/484
485: デフォルトの名無しさん [] 2024/10/04(金) 21:33:15.17 ID:tixO3LDq これ読んだらわかるけどMoggi論文の読書感想文。いまさらの。 匿名以外でいまさら突っ込んでくるわけないじゃん。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/485
486: デフォルトの名無しさん [] 2024/10/04(金) 21:33:16.29 ID:tixO3LDq これ読んだらわかるけどMoggi論文の読書感想文。いまさらの。 匿名以外でいまさら突っ込んでくるわけないじゃん。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/486
487: デフォルトの名無しさん [sage] 2024/10/04(金) 21:34:24.07 ID:qBjLuAvO 関数の「型」を見ろ 入力が何で出力が何かが宣言されている http://mevius.5ch.net/test/read.cgi/tech/1639713446/487
488: デフォルトの名無しさん [] 2024/10/04(金) 21:39:26.17 ID:tixO3LDq >>484 ディスプレイに表示するまでの概念はよく考えたら既存の例でもなかったわ。 焦って変なこといったスマン。 ちょっと説明を考える。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/488
489: デフォルトの名無しさん [sage] 2024/10/04(金) 21:39:59.29 ID:WSIC8Xt5 >>484 意味不明すぎる ラムダ計算は数学的に正当化されてるだろ 例えば合流性があるとか数学的に証明されてる これのどこに非数学的要素があるんだって言ってるんだよ すでに数学的な説明がされてるものに対して、数学的に正当化されてないとか言うのやめろよ http://mevius.5ch.net/test/read.cgi/tech/1639713446/489
490: デフォルトの名無しさん [] 2024/10/04(金) 21:48:55.49 ID:tixO3LDq λ計算が数学的に正当化されてないというような話はしてなくて、 現実のプログラムをλ計算に反映させようと思っても入出力とか非決定計算の部分は表現しきれない そのλ計算からはみ出す部分をどう正当化させようかという話。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/490
491: デフォルトの名無しさん [sage] 2024/10/04(金) 21:52:13.21 ID:WSIC8Xt5 >>490 じゃあHaskellは純粋にただの型付きラムダ計算なんだから、数学的に正当化されてない部分などない おしまい http://mevius.5ch.net/test/read.cgi/tech/1639713446/491
492: デフォルトの名無しさん [] 2024/10/04(金) 22:03:12.33 ID:tixO3LDq >>491 うーん。例えば、数学は集合論上で展開されているから、集合論があればその上で展開される 解析学とか、線形代数学とかいらない、みたいな論法じゃない? この現象は、解析学でモデル化できるけれども、解析学は集合論上で展開できるから、 そんなモデル化はいらなくていちいち集合論の言葉で書けばいいじゃん的な。 みんなそこに興味あるわけじゃないと思いますよ。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/492
493: デフォルトの名無しさん [] 2024/10/04(金) 22:08:30.14 ID:vLDssEdm >>484 横からというか >460 書いた者だけど、あなたの疑問は解釈1の「アクションを受け取ってアクションを返す関数」だとざっくりし過ぎて納得いかないって感じでしょうか? でしたら、解釈2では納得出来ませんでしょうか? 解釈2は、モナドの効能の一つに追加して「数学の世界にアウトソーシングという概念を持ち込む」というものです。 モナドの例えとして、床下配線というのがありますが、MaybeやListの様な通常のモナドも、>>=の中に関数適用部分を押し込んで、表から見えないようにしています。 (これも、見ようによってはアウトソーシングです。同じ数学の世界なので、隣の席に頼んだ感じですが) IOモナドは、>>=の中すら見えない状態で関数適用しているわけですが、 >460 でも書いたとおり、「数学の外(ハードウェア)」で関数適用されていると考えるわけです。 IOモナドの>>= は、外の世界と遣り取りする受付窓口というわけですね。 (実際、バッファの様な振る舞いをします) main = do x <- return 0 _________x <- return (x + 1) _________print x http://mevius.5ch.net/test/read.cgi/tech/1639713446/493
494: デフォルトの名無しさん [sage] 2024/10/04(金) 22:14:36.08 ID:WSIC8Xt5 >>492 ラムダ計算も集合論上で展開されてるだろ だから、Haskellも集合論の言葉で書かれてるじゃん そんな誰もが分かってるけど、いちいち書いても何の得もないことを話したかったの? http://mevius.5ch.net/test/read.cgi/tech/1639713446/494
495: デフォルトの名無しさん [] 2024/10/04(金) 22:16:42.74 ID:vLDssEdm この場合、IOモナドを使って変数xを書き換えているのではなく、シャドーイングによって同じxという名前の変数を新しく作って、古い x に +1 した値を束縛しています。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/495
496: デフォルトの名無しさん [] 2024/10/04(金) 22:21:54.69 ID:tixO3LDq >>493 ごめんなさい。全然違う。入出力を題材にしているのはあくまで例で別に疑問はないです(実装をちゃんと知っているわけではないですが)。 モナドを導入する動機はMoggi論文読んだ読書感想文なので途中まで書いてますが、圏をなすかどうかです。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/496
497: デフォルトの名無しさん [] 2024/10/04(金) 22:27:08.92 ID:vLDssEdm 無理やりハードウェアも数学と言い張るなら、ハードウェアもチューリングマシンという計算モデルなので数学が元と言えなくはない? そういうこじつけは置いておいても、IOモナドをアウトソーシングと考えると、じゃあ外の世界はめちゃくちゃか?と考えて、そうではないと気付く。 ハードウェアも一定の秩序がある。 数学だけが全てではないのかもしれない。 何かしらの秩序というか、法則性を持った世界(数学、数学以外含む)どうしのやり取りにモナドが橋渡しとして働いているのでは?とか、考えたりする。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/497
498: デフォルトの名無しさん [] 2024/10/04(金) 22:28:17.05 ID:tixO3LDq >>494 モナドの原論文(Moggiの論文)の読書感想文を入出力の計算効果を題材に解説してみているんだって。 ブログに書いても今更突っ込むなんて恥ずかしいことができる人はいるわけないので、ここに書いている。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/498
499: デフォルトの名無しさん [sage] 2024/10/04(金) 22:32:08.56 ID:WSIC8Xt5 >>498 その人はHaskellは数学的に正当化されてないけしからんって言ってたの? http://mevius.5ch.net/test/read.cgi/tech/1639713446/499
500: デフォルトの名無しさん [sage] 2024/10/04(金) 22:34:04.82 ID:WSIC8Xt5 最低限、論文に書いてある正しいこととお前の妄想がはっきり区別できるように感想文を書けよ http://mevius.5ch.net/test/read.cgi/tech/1639713446/500
501: デフォルトの名無しさん [] 2024/10/04(金) 22:44:05.60 ID:tixO3LDq >>499 はっきりそうは言ってない。 プログラムをλ項に対応させて単純化させると、valueからvalueへの全域関数となるけれど、 そう考えると、非停止性とか非決定性、副作用といった現実のプログラムにある特徴が失われる(だからそれを何とかしようと読める)。 >>500 そんなことできるほど力量ないです。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/501
502: デフォルトの名無しさん [] 2024/10/04(金) 22:46:51.98 ID:vLDssEdm >>496 少なくともコマンド系のプログラムは圏をなしますね。 Haskellで作ると実感しますが、Haskellに限らず、 (ユーザーから見て)プログラムそのものが関数になります。 Linuxでコマンドをパイプライン処理するのは関数(射の)合成に相当しますし。 id相当のプログラムは作れますし。 ・・・と考えると圏をなすと思うのですが。 (GUIプログラムもボタン単位とかで関数と言えますが、合成は…押した順序?) 例えば {(x,2x+1) | x ∈ R} と 2x+1のグラフは同型だと直感的に分かりますが、その関数(射)は数式で表せません。 圏論では、可換図を受け取って可換図を返すとか出てきますので、{(x,2x+1) | x ∈ R} と 2x+1のグラフを結ぶ関数(射)が人間って言うのも有かな?とか、考えます。 (圏論では同型と分かれば(証明できれば)よくて、射の中身には言及しない) http://mevius.5ch.net/test/read.cgi/tech/1639713446/502
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 165 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.032s