関数型プログラミング言語Haskell Part34 (694レス)
関数型プログラミング言語Haskell Part34 http://mevius.5ch.net/test/read.cgi/tech/1639713446/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
333: デフォルトの名無しさん [sage] 2024/08/28(水) 23:56:40.97 ID:FNkSebMV >>332 Haskellはモナドの実証言語という側面が強いから、モナドは結局よくわからないものという結論に達した今では話題もないし、Haskellで視聴回数稼げないんじゃない。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/333
334: デフォルトの名無しさん [] 2024/08/29(木) 12:50:10.24 ID:D5XAFbVY 自作ライブラリの(+)とPrelude.+が被って、Prelude.+使いたい時一々修飾するの面倒くさいしコードも汚くなります 被った時はデフォルトでPrelude.+を使うよって指定することはできないのですか? http://mevius.5ch.net/test/read.cgi/tech/1639713446/334
335: デフォルトの名無しさん [sage] 2024/08/29(木) 12:53:31.30 ID:1jszJs3n >>332 +1 http://mevius.5ch.net/test/read.cgi/tech/1639713446/335
336: デフォルトの名無しさん [sage] 2024/08/29(木) 12:54:42.14 ID:1jszJs3n >>334 自作の方を修飾 http://mevius.5ch.net/test/read.cgi/tech/1639713446/336
337: デフォルトの名無しさん [] 2024/08/29(木) 14:06:11.00 ID:gtm/5H5m >>334 両方使う予定があるのに、何故わざわざ同じ記号にしたのか…。 自分は自作の方を(.+)とか、微妙に変えてる。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/337
338: デフォルトの名無しさん [] 2024/08/29(木) 14:06:50.30 ID:gtm/5H5m 使用例: 1 .+ 1 >2 http://mevius.5ch.net/test/read.cgi/tech/1639713446/338
339: デフォルトの名無しさん [sage] 2024/08/29(木) 16:27:15.59 ID:Nq0HdWD9 やだやだ!修飾したくない! どっちの+か特定して自動的に選択してよう! http://mevius.5ch.net/test/read.cgi/tech/1639713446/339
340: デフォルトの名無しさん [sage] 2024/08/29(木) 16:57:49.70 ID:YXIyrRhD 何の自作型だか知らんがSemigroup実装して(<>)にでもすれば http://mevius.5ch.net/test/read.cgi/tech/1639713446/340
341: デフォルトの名無しさん [sage] 2024/08/29(木) 17:40:12.63 ID:aIGVGYPU 就職しろよ http://mevius.5ch.net/test/read.cgi/tech/1639713446/341
342: デフォルトの名無しさん [] 2024/08/29(木) 20:48:46.38 ID:gtm/5H5m >>339 独自の(+)を自動で使い分けてもらうにはNum型クラスのインスタンスにする必要があるけど、それでも見分けるには型が違わないといけない。 独自の(+)は、独自の型を受け取りますか? そうじゃないとPreludeの(+)と判別する術がないけど。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/342
343: デフォルトの名無しさん [] 2024/08/29(木) 20:51:12.20 ID:gtm/5H5m あ、できれば型宣言を見せて貰えるとアドバイスしやすい。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/343
344: デフォルトの名無しさん [] 2024/08/31(土) 21:17:53.38 ID:XbdVGeAf ワカランドとして .+. と .-. と .*. を定義することにしました。しかし本質的に解決するにはNumクラスのインスタンス宣言するらしいですね。 しかし独自型同士の+と-、Rationalとの*、Rationalとの/はできますが、 独自型同士の*、独自型同士の/は定義不可能です。 従ってNumクラスになることはできませんでした。 結局どうしていいか判らんどからのワカランドで落ち着きました。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/344
345: デフォルトの名無しさん [] 2024/09/03(火) 18:48:39.95 ID:yXFMfbtr もしかしてData.Mapって遅い? 一日中検索かけてるような処理なら、もうMapを卒業するべきときか・・・ http://mevius.5ch.net/test/read.cgi/tech/1639713446/345
346: デフォルトの名無しさん [] 2024/09/04(水) 00:16:15.77 ID:r/FGXedG Data.Mapというより、リストが遅い。 とりあえずコンパイルの際にghc -O2とかghc -O3とかの最適化掛けてみる。 それでもなお速さを求めるなら、ByteStringとか使うと良い。 もしくは、正格評価版HaskellことIdris 2やRustに乗り換える。 (Idris1と2で互換性が無いらしく、別言語扱いされてる) Haskellで速さを求めるとバッドノウハウが増えて本末転倒になる。 (そこまで苦労するなら素直に速い言語覚えた方が楽。それでも9.10.1はC#並みにはなった?かな?) http://mevius.5ch.net/test/read.cgi/tech/1639713446/346
347: デフォルトの名無しさん [] 2024/09/04(水) 15:29:34.52 ID:ZA+d8/X/ リストが遅い、しかし多くのデータ構造の構築はリストから(fromList)。 つまりコンストラクション回数をいかに減らすか、一度コンストラクトした物を使いまわすか、ということですか http://mevius.5ch.net/test/read.cgi/tech/1639713446/347
348: デフォルトの名無しさん [sage] 2024/09/04(水) 16:12:14.21 ID:LSV34QaC lisp系言語はリストの操作が速いのに… http://mevius.5ch.net/test/read.cgi/tech/1639713446/348
349: デフォルトの名無しさん [] 2024/09/04(水) 22:00:37.92 ID:r/FGXedG >>347 そういう事。 そして、そういう事を考えさせる時点でどうなの?ってのもある。 文法好きだし、普段使いで困らないけど、速さ求めるなら他の言語使うよねって。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/349
350: デフォルトの名無しさん [] 2024/09/04(水) 22:22:04.95 ID:r/FGXedG >>348 遅延評価だからってのも地味に大きい。 自分はプログラミング言語「数学」の(未完全な)実装として見てるので、遅延評価じゃないと困るが。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/350
351: デフォルトの名無しさん [sage] 2024/09/05(木) 00:27:39.10 ID:mpd8c2G1 普段使いって何してんの エロ画像収集とか? http://mevius.5ch.net/test/read.cgi/tech/1639713446/351
352: デフォルトの名無しさん [] 2024/09/05(木) 04:50:37.33 ID:l0HQxOqp PythonやPerlの代わりにテキスト処理に使ってる。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/352
353: デフォルトの名無しさん [sage] 2024/09/05(木) 18:56:54.85 ID:k3Tfomjz >>351 それ面白いと思って書き込んでんの? http://mevius.5ch.net/test/read.cgi/tech/1639713446/353
354: デフォルトの名無しさん [sage] 2024/09/06(金) 09:50:34.80 ID:zzPaKLb6 ブラウザでリンク画像が http://host/hoge.php?hage=fuga.jpg みたいになってて最終的に jpg が表示されてるんだけど http://host/hoge.php?hage=fuga.jpg をブラウザで開いても jpg じゃなくて jpg ファイルのイメージがテキストファイルみたく表示される こういうのは hoge.php の造りが悪い(たぶんhttpヘッダーが可笑しい)んだろうけど じゃあなんで元頁では画像が表示されてたのかとか疑問は残る それはともかく欲しいのは jpg ファイルなので ブラウザに頼らずダウンローダーを描いた http://mevius.5ch.net/test/read.cgi/tech/1639713446/354
355: デフォルトの名無しさん [] 2024/09/06(金) 09:52:13.17 ID:zzPaKLb6 補足 修正前: jpg ファイルのイメージ 正: jpg ファイルのバイナリデータ http://mevius.5ch.net/test/read.cgi/tech/1639713446/355
356: デフォルトの名無しさん [] 2024/09/07(土) 19:33:25.03 ID:9PXNQc4Q 長大な処理となる関数を実行途中にRAM使用量が嵩んでいくとします 中には解放できる部分もある場合について、 このままガベコレせずに進んでいったらいずれOSが『君にはもうRAM貸せないよ』と言ってくるでしょうが、ランタイムシステムは ?その時になってようやく解放できる場所がないか探し出す ?-i 今必要な最低限の確保ができたら即そこに記録して終わり ?-ii 強制的にminorGCを発動して、即そこに記録して終わり ?-iii 強制的にMajorGCを発動して、即そこに記録して終わり ?-iv 強制的にBlockingMajorGCを発動して、即そこに記録して終わり ?-v もはや解放できる場所は見つからないと判断したら例外終了 ?何もせず例外終了する ?その他 どれですか? http://mevius.5ch.net/test/read.cgi/tech/1639713446/356
357: デフォルトの名無しさん [] 2024/09/07(土) 19:35:13.52 ID:9PXNQc4Q 文字化けしちゃいました。文字化けした?は1、2,3だと思ってください http://mevius.5ch.net/test/read.cgi/tech/1639713446/357
358: デフォルトの名無しさん [] 2024/09/08(日) 00:17:59.58 ID:m7MeNrY2 loop s なんちゃらかんちゃら = do let final_score = long_thunk_score + s s' = sをなんちゃらかんちゃら modify' $ Data.Map.Strict.insert key final_score unsafePerformIO ( evaluate $ rnf final_score ) `seq` loop s' なんちゃらかんちゃら このStateモナドは、final_scoreは状態Mapへ挿入される時はWHNFでしょうが、直後の行で完全に評価されています この事はマップに挿入されたfinal_scoreへ影響を与えますか? つまりマップへ挿入済みのサンクとしての値を後からUnsafePerformIOとevaluateとrnfを組み合わせて狙ったタイミングでRNF化できますか? http://mevius.5ch.net/test/read.cgi/tech/1639713446/358
359: デフォルトの名無しさん [sage] 2024/09/09(月) 11:45:42.71 ID:CQiqzRbc >>356 黙って動いてるフリをする http://mevius.5ch.net/test/read.cgi/tech/1639713446/359
360: デフォルトの名無しさん [sage] 2024/09/26(木) 23:16:42.97 ID:eAiUCVhs この言語まだ息してるのか? http://mevius.5ch.net/test/read.cgi/tech/1639713446/360
361: デフォルトの名無しさん [sage] 2024/09/27(金) 00:41:23.43 ID:ppX7mFe8 おまいらは圏論はちゃんとマスターしたか? 最近圏論のお勉強流行ってないみたいだが http://mevius.5ch.net/test/read.cgi/tech/1639713446/361
362: デフォルトの名無しさん [sage] 2024/09/28(土) 08:56:06.97 ID:boijaUwp そもそもHaskellに圏論必要ないよ http://mevius.5ch.net/test/read.cgi/tech/1639713446/362
363: デフォルトの名無しさん [sage] 2024/09/28(土) 11:20:55.86 ID:szplrxFB 背景の理論を理解してないとbrainf*ckと同列のクソパズル言語にしか見えない http://mevius.5ch.net/test/read.cgi/tech/1639713446/363
364: デフォルトの名無しさん [sage] 2024/09/28(土) 11:30:45.96 ID:D4fCa7Ze 米田の何ちゃらの辺りで心が折れて終了 http://mevius.5ch.net/test/read.cgi/tech/1639713446/364
365: デフォルトの名無しさん [sage] 2024/09/28(土) 11:48:20.49 ID:M6f6jLKS >>363 > brainf*ckと同列のクソパズル言語 話がそれるけどbrainf*ckがパズル言語なのは100%その通りだよ しかし構文パーサー、インタープリターやトランスレーター、JITエンジンの実践入門として 丁度良いからこれだけ根強い人気なんだぜ http://mevius.5ch.net/test/read.cgi/tech/1639713446/365
366: デフォルトの名無しさん [] 2024/09/28(土) 20:40:40.54 ID:SDDTPU1M >>361 流行ってないのか…。 個人的にはHaskellよりも圏論の方に関心が移ってるのに…。 んでも、圏論はHaskellでなくても、全てのプログラミング言語の裏側でも動いてるし、それこそ算数の裏側でも動いてる。 モナドが表に出てきてるからHaskellには圏論が必要って思うかもだけど、モナドって言わないで do形式だけ教えて知れっとしてても良いし、「こういう動きの演算子」としてモナドを紹介するだけでも良い。 受験数学とちゃんと向き合う数学みたいなものだけど、変にモナドを理解しようとすると深みにはまる。 (それはそれで楽しいけど、楽しめる人だけだよね…) http://mevius.5ch.net/test/read.cgi/tech/1639713446/366
367: デフォルトの名無しさん [sage] 2024/09/29(日) 07:33:19.55 ID:bBvJfaeS ラムダと束縛変数をマスターしなければdo記法もマスターできないのを すっかり忘れるぐらいポイントフリーが普及してるでしょ http://mevius.5ch.net/test/read.cgi/tech/1639713446/367
368: デフォルトの名無しさん [sage] 2024/09/29(日) 08:45:10.72 ID:3/NLN/+f コーダーが数学の学習に使える時間なんて限られている 時間や基礎知識が足らないので、難解な数学を攻略するのはほぼ不可能 大学生時CSや数学の講義で身に付けておくしかない http://mevius.5ch.net/test/read.cgi/tech/1639713446/368
369: デフォルトの名無しさん [sage] 2024/09/29(日) 09:32:49.44 ID:twIz68VA 難解な数学を攻略できるなら 日本ではコーダーにはならないよな http://mevius.5ch.net/test/read.cgi/tech/1639713446/369
370: デフォルトの名無しさん [sage] 2024/09/29(日) 10:15:01.09 ID:AteoOTMZ 業界入るのに難解数学不要 プログラミングにも不要 数学分からんのでgoogle入るのは無理だけど http://mevius.5ch.net/test/read.cgi/tech/1639713446/370
371: デフォルトの名無しさん [sage] 2024/09/29(日) 11:01:25.51 ID:bBvJfaeS 人工的なルールに依存するのがクソパズルだが 自然界でなおかつ野生のマウンティング的なルールにも依存しないことが数学の目的のひとつだね http://mevius.5ch.net/test/read.cgi/tech/1639713446/371
372: デフォルトの名無しさん [sage] 2024/09/29(日) 20:36:16.00 ID:JU2vTa1F 圏論が全てのプログラミング言語の裏で動いてるとか適当なこと書くなよ http://mevius.5ch.net/test/read.cgi/tech/1639713446/372
373: デフォルトの名無しさん [] 2024/09/30(月) 00:30:17.34 ID:Kh4w53R0 >>368 高卒の自分でも理解できるんだから、難しいわけではないんだけど。 何度も出てる通り、必ずしもモナドを理解する必要はないし。 そもそも自分がプログラマーの頃だって、12-13時間働いた後も新しいプログラミング言語や数学勉強してたぞ。 (新しい仕事のために学びたくない言語に時間使う事も) 高卒が圏論みたいな大学数学学ぶには専門用語がそもそも分らんから、用語が分かるまで遡った。 (アーベル圏のアーベルが分からないレベルからのスタート) 自分に投資できないと淘汰されるぞ。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/373
374: デフォルトの名無しさん [] 2024/09/30(月) 00:59:39.85 ID:Kh4w53R0 >>372 適当じゃない。 モナドは(主に)逐次処理に現れる構造なので、Haskellのような遅延評価で逐次処理自体を作らないといけない(逐次処理をエミュレートするためのモナド)言語でない限り、意識することすらない。 (だからC言語で言う i = 0; の「;」とか言われる) http://mevius.5ch.net/test/read.cgi/tech/1639713446/374
375: デフォルトの名無しさん [sage] 2024/09/30(月) 03:08:44.15 ID:g+sPZSfB >>372 沈黙させる努力をするよりも(全ての)人の話を聞くのをサボる方が良い 努力は時間がかかる 一瞬で報われるものは努力ではない http://mevius.5ch.net/test/read.cgi/tech/1639713446/375
376: デフォルトの名無しさん [sage] 2024/09/30(月) 12:40:29.07 ID:+8KmLjt4 圏論の極々一部のモナドを主語をデカくして圏論ガーとか言ってる人は何も分かってないんだなと思うけどね 俺みたいに数学かじってた人からすると 圏論を勉強すると「あ、この概念はこの分野のこれのことか」ってわかるけど そうじゃない人は何のことを言ってるのかわからんと思う 専門家でも自分の担当外の圏なんて知らないのに 圏論という括りで語ろうとする人はそういうのすら理解してない http://mevius.5ch.net/test/read.cgi/tech/1639713446/376
377: デフォルトの名無しさん [sage] 2024/09/30(月) 13:52:28.73 ID:CD9F70e/ やっと普通の人が出てきて安心した http://mevius.5ch.net/test/read.cgi/tech/1639713446/377
378: デフォルトの名無しさん [sage] 2024/09/30(月) 13:59:18.70 ID:pkON+G7q >>376 数学者向けの圏論の教科書の応用、具体例は全て数学。 数学知らない人が読んでも分かるわけがない。 応用、具体例、演習をCSの分野から採った教科書が望まれるが、書くのが難しい上に面白くするのも困難。 大体CSすらちゃんと修めてないエンジニアはやはり読めない。 CS自体ベースに位相、代数、グラフ理論と数学使うし。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/378
379: デフォルトの名無しさん [sage] 2024/09/30(月) 14:09:03.81 ID:rwCIuc1C 趣味でやる人に良くいるんだよね。 応用各分野に囚われずに、圏論そのものを学習したい、一般圏論を研究したいって人。 これは数学で言うと、集合論と同じく数学基礎論の分野。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/379
380: デフォルトの名無しさん [] 2024/09/30(月) 19:05:45.94 ID:8C0MP56i 操作的意味論とか表示的意味論でプログラムを数学の話にして、その数学を圏論で整理するって話 だからアーベル圏とか具体的な圏はあんま出てこない。 やるとすれば デカルト閉圏:ランベックがλ計算のモデルになると発見して関数型プログラミング的に重要 クライスリ圏:Moggiが計算効果をカプセル化したときの根拠の圏 ローベア理論:代数的効果をちゃんと理解するときは必要らしい。操作的意味論と表示的意味論と同じようにモナドの理論と妥当性が成り立つようだ。 ぐらいじゃね。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/380
381: デフォルトの名無しさん [sage] 2024/09/30(月) 21:09:21.28 ID:CVtPTYpb じゃあラムダ計算(のモデル)だけを考えよう タプルや代数的データ型は使わない それでもモナドの具体例を作れるのを知ってるのが専門バカ 知らないのが一般国民だ http://mevius.5ch.net/test/read.cgi/tech/1639713446/381
382: デフォルトの名無しさん [] 2024/09/30(月) 21:29:13.05 ID:8C0MP56i 一般国民。 λ計算のモデルでモナド作ってなにかいいことあるの?計算効果結局表現できないんじゃ? 拡張してcomputational lambda calculusやるって話? http://mevius.5ch.net/test/read.cgi/tech/1639713446/382
383: デフォルトの名無しさん [sage] 2024/09/30(月) 21:47:09.45 ID:CVtPTYpb ないんじゃないか ただ「具体例を出せば、いいことがある」とは誰も言ってない というファクトをチェックするのは悪いことではない http://mevius.5ch.net/test/read.cgi/tech/1639713446/383
384: デフォルトの名無しさん [] 2024/09/30(月) 21:53:56.34 ID:8C0MP56i いいこと(メリット)があるから具体例が作られると思うんだが。 それは単に具体例の適用が間違ってるって話じゃね? なんとなく作れるから群構造作ってみましたとかとか目的不在で作ったらそら何がいいかわからんし。 モナドだったら、各計算効果を圏(クライスリ圏)の中に閉じ込めることに成功しました(カプセル化)。 計算効果は強モナドの構造を取っているようです(計算効果の研究のとっかかり)。 みたいないいことあるから流行るんでしょ。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/384
385: デフォルトの名無しさん [sage] 2024/10/01(火) 04:04:03.18 ID:PZ96E01/ 別にそれ圏論を持ち出す必要ないよね ハイおしまい http://mevius.5ch.net/test/read.cgi/tech/1639713446/385
386: デフォルトの名無しさん [sage] 2024/10/01(火) 09:39:15.78 ID:KbL1rq/V >なんとなく作れるから群構造作ってみました ルービックキューブのことか http://mevius.5ch.net/test/read.cgi/tech/1639713446/386
387: デフォルトの名無しさん [sage] 2024/10/01(火) 09:46:07.52 ID:y60InQ2q 数学屋さんもね 研究では圏を使うが 学生に教えるときは 圏を記述に使わず教えたりする http://mevius.5ch.net/test/read.cgi/tech/1639713446/387
388: デフォルトの名無しさん [] 2024/10/01(火) 19:23:20.12 ID:7kn4RxVI 圏論の話題になったから振ったのに。まあいいよ。 圏論根拠で(ソフトウェア工学的にじゃなくて)数学的にカプセル化が実現されてるってすごい ことだと思うけどね。 >ルービックキューブのことか ルービックキューブ解くという目的あるんなら構築する意味あるんじゃない。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/388
389: デフォルトの名無しさん [sage] 2024/10/01(火) 19:34:54.43 ID:YZm15ve9 群持ち出したところで解けないよ http://mevius.5ch.net/test/read.cgi/tech/1639713446/389
390: デフォルトの名無しさん [sage] 2024/10/01(火) 20:18:43.32 ID:PZ96E01/ 圏論がプログラミングの問題解決に寄与するわけないのにね ただ当てはめてみたってだけのことを過大評価しすぎ http://mevius.5ch.net/test/read.cgi/tech/1639713446/390
391: デフォルトの名無しさん [sage] 2024/10/01(火) 20:52:10.03 ID:u1x9FxNe 雪田修一の「圏論入門 Haskellで計算する 具体例から」ってどうなん? http://mevius.5ch.net/test/read.cgi/tech/1639713446/391
392: デフォルトの名無しさん [sage] 2024/10/01(火) 21:10:04.55 ID:YpLGkLDy 板チ 目的と手段を混同したら予選敗退 http://mevius.5ch.net/test/read.cgi/tech/1639713446/392
393: デフォルトの名無しさん [] 2024/10/01(火) 21:16:26.45 ID:7kn4RxVI どうなんって何を知るのに?出たときに立ち読みしただけだけど。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/393
394: デフォルトの名無しさん [sage] 2024/10/01(火) 21:16:56.98 ID:Ig6Tf0ue >>391 青本と似てて定義の後に具体例を出すみたいな感じだけど 具体例が数学科の人じゃないとわからない内容ばかりなので 結局個別の分野をやらないと理解できないと思う http://mevius.5ch.net/test/read.cgi/tech/1639713446/394
395: デフォルトの名無しさん [sage] 2024/10/01(火) 21:38:18.13 ID:Ig6Tf0ue 圏論をやりたいならまず代数学をやるべき それだけでだいぶ見通しが違う http://mevius.5ch.net/test/read.cgi/tech/1639713446/395
396: デフォルトの名無しさん [] 2024/10/01(火) 21:42:08.00 ID:4kH314XL >>390 モナドの効用で自分の把握してるのは ・数学やHaskellの様な遅延評価の場合、逐次処理を表現できる (これは変数を使いまわさない場合は、関数合成で十分だが、変数を使いまわすときはモナドじゃないと使いまわせない) ・副作用のある関数を使っても参照透明性は保たれている ・モナドは入れ物前提の概念なので、空の状態を使って例外処理をまとめることができる 正直、普通のプログラミング言語にも役立ちそうな3つ目は実感はしてないけど、ネットで例外処理よりモナドの方が優秀っぽい記事を読んだ 2番目もマルチスレッドとか最適化には役に立ちそうではある (マルチスレッドなら正格評価版HaskellのIdris2やRustだと思うが) http://mevius.5ch.net/test/read.cgi/tech/1639713446/396
397: デフォルトの名無しさん [] 2024/10/01(火) 22:05:17.67 ID:4kH314XL 圏論全体だと…当たり前のことを構造として研究してるだけなので、圏論というよりはHaskellの型クラスとの合わせ技で関手(Functor)の方がfmap的なのを他の言語にも導入すれば役に立つかも 圏論の関手を一言で言えば(関数も含めた)型変換 (Hakellだと入れ物前提にすることで、関数ごと型変換を実現。本来はもっと柔軟) 自然変換は一言で言えば単位変換とか、大文字小文字の変換 http://mevius.5ch.net/test/read.cgi/tech/1639713446/397
398: デフォルトの名無しさん [] 2024/10/01(火) 22:16:21.15 ID:4kH314XL モノイドは条件が結合法則だけなので、ほぼ結合法則そのものがモノイド (その割には繰り返しとか数え上げに現れる構造) そしてモナドも構造はそっくりなので、入れ物前提のモノイドとも考えられる (モナドの再帰はループ処理でスタックを消費しないし、数え上げは逐次処理と考えられる) http://mevius.5ch.net/test/read.cgi/tech/1639713446/398
399: デフォルトの名無しさん [sage] 2024/10/01(火) 23:08:20.75 ID:KbL1rq/V バグを無くすこと自体が目的になりがちなのが数学とプログラムなんだよね 真の目的のため、デバッグを二の次にするやつが正しいと言われても・・・ それって証明とかあるんですか http://mevius.5ch.net/test/read.cgi/tech/1639713446/399
400: デフォルトの名無しさん [sage] 2024/10/01(火) 23:21:35.19 ID:syLuNokt >>397 大文字小文字の変換が自然変換の部分kwsk >>399 目的と手段を区別したら、手段は二の次だと言うのは予選敗退者のポエム http://mevius.5ch.net/test/read.cgi/tech/1639713446/400
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
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 281 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.011s