関数型プログラミング言語Haskell Part34 (686レス)
関数型プログラミング言語Haskell Part34 http://mevius.5ch.net/test/read.cgi/tech/1639713446/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
1: デフォルトの名無しさん [] 2021/12/17(金) 12:57:26.37 ID:NPioGyUL 関数型プログラミング言語 Haskell について語るスレです。 Haskell Language(公式サイト) https://www.haskell.org/ 日本Haskellユーザーグループ - Haskell-jp https://haskell.jp/ 前スレ 関数型プログラミング言語Haskell Part33 https://mevius.5ch.net/test/read.cgi/tech/1581326256/ http://mevius.5ch.net/test/read.cgi/tech/1639713446/1
587: デフォルトの名無しさん [sage] 2024/11/03(日) 17:33:41.03 ID:4RaSizfZ その手のはかなり昔からの話だしその頃pythonはそんな一般的ではない http://mevius.5ch.net/test/read.cgi/tech/1639713446/587
588: デフォルトの名無しさん [] 2024/11/03(日) 18:58:10.27 ID:W/WQS3jI >>586 え…。 Haskellを何に使ってるか聞かれたから答えたのに、そりゃ無いよ。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/588
589: デフォルトの名無しさん [sage] 2024/11/06(水) 18:53:34.69 ID:s8sk505y semigroupoidsのAltからFunctor抜いたやつないのかな catsのSemigroupK相当のやつ http://mevius.5ch.net/test/read.cgi/tech/1639713446/589
590: デフォルトの名無しさん [sage] 2024/11/07(木) 02:17:24.00 ID:w1FRCcDr HackageもHaskellWikiもつながらねえ 攻撃でも受けたか http://mevius.5ch.net/test/read.cgi/tech/1639713446/590
591: デフォルトの名無しさん [] 2024/11/07(木) 06:45:43.72 ID:NVSipRlq 数か月前もHoogle繋がらなかったしね…。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/591
592: デフォルトの名無しさん [] 2024/11/09(土) 18:32:16.19 ID:r4DlAvJp mylist.py TotalSeconds : 6.1246778 1:def mylist(n, m): 2: a = 1 3: outer = [] 4: for _ in range(0, n): 5: inner = [] 6: for _ in range(0, m): 7: inner.append(a) 8: a += 1 9: outer.append(inner) 10: return outer 11: 12:print(mylist(6000, 8000)[-1][-1]) 上と同じ動きのコードを書いたけど、 アルゴリズムとしてはPythonと同じmylist.hsのコードが良いはずなのに、 どっちも最適化するとmylist2.hsのが良好。 (ファイル名の横の秒数は実行時間) mylist.hs TotalSeconds : 4.107899 1:main = print.last.last $ mylist 6000 8000 2: 3:mylist n m = take n.f $ [1..] 4: where f ns = xs:f ys 5: where (xs, ys) = splitAt m ns mylist2.hs TotalSeconds : 2.3916408 1:main = print.last.last $ mylist 6000 8000 2: 3:mylist n m = take n.iterate f $ [1..m] 4: where f = map (+m) http://mevius.5ch.net/test/read.cgi/tech/1639713446/592
593: デフォルトの名無しさん [] 2024/11/09(土) 18:32:43.47 ID:r4DlAvJp mylist2.hsのアルゴリズムは f = map (+3)とすれば [1,2,3] [4,5,6] -- f [1,2,3] = [1 + 3, 2 + 3, 3 + 3] = [4,5,6] [7,8,9] -- f (f [1,2,3]) = f [1 + 3, 2 + 3, 3 + 3] = [4 + 3, 5 + 3, 6 + 3] = [7,8,9] と、行数が増えるごとに関数の適用回数が増えるので本来なら遅いはずですが、 考えるに直前の結果をキャッシュする様な最適化が施された模様。(-O3) (そうすると、mylist.hsのsplitAtの方がボトルネックになる?) 最適化なしでのコンパイルはしてないので、 もしかしたらiterateの中身自身がキャッシュするように改良されたのかも。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/593
594: デフォルトの名無しさん [] 2024/11/10(日) 16:05:22.18 ID:AfmJKCJ3 これ数学的にどういうことなのか かいつまんで教えてくらまいか watch?v=dYj0rPQeRkA http://mevius.5ch.net/test/read.cgi/tech/1639713446/594
595: デフォルトの名無しさん [sage] 2024/11/16(土) 10:08:07.70 ID:9CYVpzbn Category Theory Using Haskell An Introduction with Moggi and Yoneda Shuichi Yukita という書籍が来月出るんですって? http://mevius.5ch.net/test/read.cgi/tech/1639713446/595
596: デフォルトの名無しさん [sage] 2024/11/16(土) 14:32:48.68 ID:Avgm411i >>595 高いな > Hardcover > \36,125 Tax included http://mevius.5ch.net/test/read.cgi/tech/1639713446/596
597: 596 [sage] 2024/11/16(土) 14:36:30.07 ID:Avgm411i 円記号がバックスラッシュになっていたので訂正 ¥36,125 フォントによるわけだが http://mevius.5ch.net/test/read.cgi/tech/1639713446/597
598: デフォルトの名無しさん [sage] 2024/11/16(土) 15:13:06.50 ID:ZnREBqGy 買って損するだけの高額本の予感 http://mevius.5ch.net/test/read.cgi/tech/1639713446/598
599: デフォルトの名無しさん [sage] 2024/11/16(土) 15:27:44.60 ID:x85mVkLf なんだ雪田の本じゃねぇか プラスアルファはあるかも知れんが 基本雪田の「圏論入門 Haskellで計算する具体例から」と大差無いと思うぞ http://mevius.5ch.net/test/read.cgi/tech/1639713446/599
600: デフォルトの名無しさん [sage] 2024/11/16(土) 20:50:43.88 ID:ZUJ+jDQV 結局Moggiのアイディアがなんなのか書いてなかったから、洋書でも同じでしょ。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/600
601: デフォルトの名無しさん [sage] 2024/11/16(土) 21:01:44.68 ID:UsNa54E4 すでに書かれてるのがwikipediaにあるじゃん https://ja.m.wikipedia.org/wiki/%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%B9%E3%83%AA%E5%9C%8F http://mevius.5ch.net/test/read.cgi/tech/1639713446/601
602: デフォルトの名無しさん [sage] 2024/11/16(土) 21:18:48.47 ID:ZUJ+jDQV wikiのは肝心のvalueとcomputationについてちゃんと書いてない。 computationの訳を「計算された値」とするのは微妙。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/602
603: デフォルトの名無しさん [sage] 2024/11/16(土) 21:28:16.06 ID:ZUJ+jDQV 『圏論入門』の方にはvalueもcomputationも書いてなかったと思うから言わずもがな。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/603
604: デフォルトの名無しさん [sage] 2024/11/16(土) 21:43:11.16 ID:HNcchqjT 出たら人柱になって買って読んで下さい http://mevius.5ch.net/test/read.cgi/tech/1639713446/604
605: デフォルトの名無しさん [sage] 2024/11/16(土) 22:29:43.38 ID:MlIU4R6X 多分加筆してると思うよ 日本の出版社はなぜかページ数制限があることが多いんだけど 海外にそれはないし http://mevius.5ch.net/test/read.cgi/tech/1639713446/605
606: デフォルトの名無しさん [sage] 2024/11/16(土) 22:41:34.37 ID:ZUJ+jDQV 加筆してvalueとcomputationの説き起こしから始めて本当にMoggiのアイディア書くかなぁ? 米田の補題が工学応用できるとかいう主張と衝突する気がするんだけれど。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/606
607: デフォルトの名無しさん [sage] 2024/11/17(日) 08:11:12.88 ID:RK7ri1yG レポよろ http://mevius.5ch.net/test/read.cgi/tech/1639713446/607
608: デフォルトの名無しさん [sage] 2024/11/17(日) 09:07:13.97 ID:zx90fdBd ぷりぷりです http://mevius.5ch.net/test/read.cgi/tech/1639713446/608
609: デフォルトの名無しさん [sage] 2024/11/17(日) 14:35:29.88 ID:895B27h0 4万近く出してわざわざレポだけする奴なんているの? 圏論入門と同じでそれらしいキーワードだけ出して終わりの可能性高いのに。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/609
610: デフォルトの名無しさん [sage] 2024/11/17(日) 19:34:30.56 ID:A63wUj4E まぁそもそもHaskellで圏論持ち出す必要ないしな 生産性上がらないよ http://mevius.5ch.net/test/read.cgi/tech/1639713446/610
611: デフォルトの名無しさん [sage] 2024/11/17(日) 19:42:07.02 ID:bAlb8WtH Haskell、コーダー界隈で圏論勉強会が流行していた時期、あれは何だったのか? http://mevius.5ch.net/test/read.cgi/tech/1639713446/611
612: デフォルトの名無しさん [sage] 2024/11/17(日) 20:00:10.23 ID:895B27h0 圏がグラフの拡張みたいな概念だったから、グラフ理論みたいに有用なプログラミングにつかえるアルゴリズムがあるんじゃないかってことでやってたように見えた。 モナドも説明したかったようにみえたけど、結局圏論の勉強を踏まえた説明はでてこなかった。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/612
613: デフォルトの名無しさん [sage] 2024/11/17(日) 21:17:15.64 ID:U7PWp5lE >>611 俺も行ってたわw 数学クラスターからの圏論マウントを喰らっていくのやめたがw そういうやつ多いんじゃないか http://mevius.5ch.net/test/read.cgi/tech/1639713446/613
614: デフォルトの名無しさん [sage] 2024/11/20(水) 04:56:53.37 ID:vcDCbnyw プログラムは合成できないといけないって当然のことを、いちいち圏である必要があるとか言い換えるオレ天才だわー http://mevius.5ch.net/test/read.cgi/tech/1639713446/614
615: デフォルトの名無しさん [sage] 2024/11/20(水) 18:55:46.60 ID:QVKMRnqI https://dic.nicovideo.jp/a/%E9%A1%A7%E5%AE%A2%E3%81%8C%E6%9C%AC%E5%BD%93%E3%81%AB%E5%BF%85%E8%A6%81%E3%81%A0%E3%81%A3%E3%81%9F%E3%82%82%E3%81%AE http://mevius.5ch.net/test/read.cgi/tech/1639713446/615
616: デフォルトの名無しさん [sage] 2024/11/21(木) 00:16:43.88 ID:r2/mXbdf 集合論と圏論の抽象度がもし同レベルならたしかに圏である必要はないな 必要ない情報は捨象されるべきだと言われれば何も反論できない だから抽象化マウントは強いんだ http://mevius.5ch.net/test/read.cgi/tech/1639713446/616
617: デフォルトの名無しさん [sage] 2024/11/21(木) 01:45:46.56 ID:bAf4oZLa 抽象化すればプログラムしにくいと思うけど http://mevius.5ch.net/test/read.cgi/tech/1639713446/617
618: デフォルトの名無しさん [sage] 2024/11/21(木) 19:02:52.56 ID:fTdZV0pc プログラムが圏になるためとかいうクソしょうもない理由がモナド導入の理由って本当か? 圏論っていうか圏じゃん。モノイド構造も米田の補題もなにも出てこないんだが http://mevius.5ch.net/test/read.cgi/tech/1639713446/618
619: デフォルトの名無しさん [sage] 2024/11/21(木) 21:57:07.56 ID:r2/mXbdf 型構築子を導入すれば関手もモナドも勝手についてくる 型を必要とするすべての言語で同じことが言える これも抽象化 http://mevius.5ch.net/test/read.cgi/tech/1639713446/619
620: デフォルトの名無しさん [sage] 2024/11/28(木) 10:04:33.91 ID:p2Q1UON9 haskellでスクレイピングがやりたいんだが arch linuxのリポにはscalpelがない 別言語でやったほうがいいかな? http://mevius.5ch.net/test/read.cgi/tech/1639713446/620
621: デフォルトの名無しさん [sage] 2024/12/04(水) 21:11:42.90 ID:D3PBVzJs ディストリで全部パッケージ化してくれてるとは思えん stackかcabal入れて自分で管理するんじゃね? ローカルに1GBくらいのライブラリ入るし重複しないようにしないといかんが もちろんseleniumとか使うにしてもpythonとかrubyのほうが楽やろ http://mevius.5ch.net/test/read.cgi/tech/1639713446/621
622: デフォルトの名無しさん [] 2024/12/08(日) 23:12:57.17 ID:G2o8fSXB おおむね10^-300前後(-400乗は無理だった)精度の任意精度少数。 定義済みの中ではPico(10^-12)までは定義されてる。 下の定義のE300/10^300/F300を書き換えれば任意精度の浮動小数型が作れる。 (F300がPicoとかNanoとかの型) ただし、pi/sin/sqrtなどの倍精度/単精度の浮動小数型用関数/定数が使えなくなるので四則演算を駆使して自作する必要がある。 import Data.Fixed data E300 instance HasResolution E300 where resolution _ = 10^300 type F300 = Fixed E300 http://mevius.5ch.net/test/read.cgi/tech/1639713446/622
623: デフォルトの名無しさん [sage] 2024/12/19(木) 15:03:02.64 ID:NXRHTsH0 add (x,y) (a,b) = (x+a,y+b) これをaddを定義せずにarrowで簡単にかく方法はありますか http://mevius.5ch.net/test/read.cgi/tech/1639713446/623
624: デフォルトの名無しさん [sage] 2024/12/19(木) 16:15:15.91 ID:hCGKCs/t arrowてなんすか http://mevius.5ch.net/test/read.cgi/tech/1639713446/624
625: デフォルトの名無しさん [sage] 2024/12/19(木) 19:27:09.72 ID:gIJYmlNm 富士通のスマホ http://mevius.5ch.net/test/read.cgi/tech/1639713446/625
626: デフォルトの名無しさん [] 2024/12/20(金) 01:32:43.30 ID:/9ZUXmih スマホでHaskellを簡単に書く方法はないかな http://mevius.5ch.net/test/read.cgi/tech/1639713446/626
627: デフォルトの名無しさん [sage] 2024/12/20(金) 02:01:04.72 ID:I9azuXSK >>626 今はキミの言うところの「簡単」ではない環境で書いてるってこと? http://mevius.5ch.net/test/read.cgi/tech/1639713446/627
628: デフォルトの名無しさん [] 2024/12/20(金) 02:04:07.41 ID:/9ZUXmih >>627 だまらっしゃい 俺がウザ絡みするのは良いけどアンタにレスつけてウザ絡みする権利はないんだよ 何故ならアンタは世界で一番価値のない存在だからね http://mevius.5ch.net/test/read.cgi/tech/1639713446/628
629: デフォルトの名無しさん [sage] 2024/12/20(金) 15:54:59.07 ID:IOWVZ3it スマホでHaskell書く必要ある? ないよね http://mevius.5ch.net/test/read.cgi/tech/1639713446/629
630: デフォルトの名無しさん [] 2024/12/20(金) 22:08:57.75 ID:uE9QxZQG >>626 iOSならRaskellってアプリあるけど、開発止まって大分経つので画面がずれたりする…。 ideoneとかpaiza.IOとかのクラウドサービスが今のところは一番手軽かもね。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/630
631: 警備員[Lv.1][新芽] [sage] 2025/01/08(水) 22:25:29.83 ID:lvne7rNk 初学者のため、言葉の定義があいまいな部分はご容赦ください IOモナドの純粋性についてですが(すでに言葉があやしい)、 実際に副作用が起こるのは、mainに束縛され実行されたり、ghciプロンプトからアクションを投入したときで アクションを生成するまでは同じ入力に対してはつねに同一のアクションを出力するという意味で純粋であるという理解でよいでしょうか(まだ実行前なので、副作用は生じていない) アクションを生成するまでが純粋 ただ、このときの純粋性の有り難みがさっぱり分からず… 純粋な関数が遅延評価などに有効なことや、副作用のある処理が >>= などで順序を拘束しなければならないことは分かるのですが http://mevius.5ch.net/test/read.cgi/tech/1639713446/631
632: デフォルトの名無しさん [sage] 2025/01/09(木) 20:13:21.93 ID:xwwTGWUu 評価が全部終わった後じゃないと参照透明性が保証されない。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/632
633: デフォルトの名無しさん [sage] 2025/01/09(木) 20:18:47.77 ID:xwwTGWUu 規制あったはずなんだけどなんか書き込めた。 アクションの生成が完了(コンパイルの終了)。この時点ではみんな純粋。 その後に、アクションの実行(プログラムの実行)が起こって入出力が出る。 アクションの生成時点まですべての関数が純粋関数だということは参照透明性が保証されるということで、ありがたみはその一点にあると思うが。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/633
634: デフォルトの名無しさん [sage] 2025/01/09(木) 21:49:19.20 ID:31eIYKLT 異教徒は汚染物として分離隔離する思想 http://mevius.5ch.net/test/read.cgi/tech/1639713446/634
635: 警備員[Lv.2][新芽] [sage] 2025/01/09(木) 22:58:50.93 ID:vav7Znkh >>632-633 ありがとうございます >>631 です あくアクションの生成までが純粋、でよいことを確認させていただきました でもこれって、Cだろうがアセンブラだろうが、(厳密には違うかもしれませんが)同じソースコードをコンパイル(アセンブリ)すれば同じオブジェクトファイルが生成されるのと何が違うのだろうかと >>634 にある分離隔離のような、何かこう、これまでとは違う何かがあるはず…と、浅知恵で考えるから訳が分からないのです… http://mevius.5ch.net/test/read.cgi/tech/1639713446/635
636: デフォルトの名無しさん [sage] 2025/01/09(木) 23:09:19.47 ID:2G6IUNoe >>634 おパンツ分解されたオペラッドのおパンツの中で脱糞してもズボンの裾のお股のどっち側からウンコが転げ出てくるのかわかんないだけかと思ってた。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/636
637: デフォルトの名無しさん [sage] 2025/01/09(木) 23:34:59.91 ID:xwwTGWUu >>635 >でもこれって、Cだろうがアセンブラだろうが、(厳密には違うかもしれませんが)同じソースコードをコンパイル(アセンブリ)すれば同じオブジェクトファイルが生成されるのと何が違うのだろうかと だから参照透明性の保証だって。オブジェクトファイルとしては状態変化とかしているけれど、元のHaskellコードとしては参照透明性は保たれている、そこがすごいということなんだし。 逆に普通のオブジェクトファイルと全く違うなんてことありうると思う?同じコンピュータ上で動くんだからオブジェクトファイルとしては変わらんだろ。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/637
638: 警備員[Lv.5][新芽] [sage] 2025/01/10(金) 09:27:26.71 ID:N8eMPB8m >>637 レスをありがとうございます 参照透過性の保証、ですね アクションを実行し、副作用が起こる前なので当然だ、という解釈は誤っているでしょうか まだ本の上の字面を追って学んでいるだけで圧倒的にコーティング量が足りない状態なので、これから経験を積むうちにいつかスッと腑に落ちるときがくるのかもしれません http://mevius.5ch.net/test/read.cgi/tech/1639713446/638
639: デフォルトの名無しさん [sage] 2025/01/10(金) 10:01:16.98 ID:xLB3XHZu 必要呼び評価戦略を採用するための前提として、すべての式の参照透過性が要求されるというだけでは http://mevius.5ch.net/test/read.cgi/tech/1639713446/639
640: デフォルトの名無しさん [sage] 2025/01/10(金) 18:54:00.90 ID:X+hiLHcK >>638 >アクションを実行し、副作用が起こる前なので当然だ、という解釈は誤っているでしょうか ?なんか混乱しているんじゃないか。 アクションの生成時点でのHaskellコードの参照透明性と、オブジェクトコード実行の際の参照の処理は別物だぞ。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/640
641: デフォルトの名無しさん [sage] 2025/01/10(金) 18:59:59.95 ID:X+hiLHcK 補足: Haskellコンパイルは少なくとも次の二つの段階を持つ 1.アクションの生成(入出力指示書の生成、Haskellコードの字面のコンパイル) 2.アクションの実行 1.のアクションの生成時に参照透明性がHaskellコードとして保証されている。 アクションの生成で必要な参照行為は全て終わっているので、2.では入出力だろうが破壊的操作だろうがやっても文句を言われない。 IOの機構がすごいのは1.アクションの生成計算で参照透明性が保証されているというところがうれしいところ、だという話。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/641
642: デフォルトの名無しさん [sage] 2025/01/10(金) 19:16:07.13 ID:NIbIyPdh 一度死んだら復活は有り得んので注意な http://mevius.5ch.net/test/read.cgi/tech/1639713446/642
643: 警備員[Lv.7][新芽] [sage] 2025/01/10(金) 19:39:05.74 ID:N8eMPB8m >>640-641 レスをありがとうございます そうですね 表現がいけませんでしたが、そのように理解しています あとひとつ伺いたいのが(アドバイスいただいたことがまだちゃんと理解できたわけではないのでアレですが)、 参照透明性が担保されているとは、(1.アクションを生成する時点までは)副作用がある処理は書くことができない、ということでしょうか http://mevius.5ch.net/test/read.cgi/tech/1639713446/643
644: 警備員[Lv.7][新芽] [sage] 2025/01/10(金) 19:48:40.81 ID:N8eMPB8m >>643 ですが、 このレスはちょっと意味が分かりませんね 実行前なので副作用は怒りようがありませんね http://mevius.5ch.net/test/read.cgi/tech/1639713446/644
645: デフォルトの名無しさん [sage] 2025/01/10(金) 20:01:13.00 ID:X+hiLHcK >>643-644 そのように理解しています。って本当に理解してるか? アクションの生成において生成しているのは入出力の指示書みたいなもので入出力自体はない。 こういう入力があったらこういう計算方法でこういう出力をするみたいな手順を生成しているだけ。 なんで参照透明性が担保されているというところでそんな引っかかるんだ? http://mevius.5ch.net/test/read.cgi/tech/1639713446/645
646: 警備員[Lv.7][新芽] [sage] 2025/01/10(金) 20:34:59.37 ID:0gelnbg2 >>643 で確認したかったことは次のようなことでした アクションを生成する段までは副作用なく、同一のプログラムを入力とすれば、かならず同一のアクションが出力されるか ということでした それはそうであるように思います http://mevius.5ch.net/test/read.cgi/tech/1639713446/646
647: デフォルトの名無しさん [sage] 2025/01/10(金) 20:42:16.47 ID:X+hiLHcK 同一のプログラムを入力とすればってどういう意味? 前も言ったようにアクションの生成とアクションの実行は別フェーズ。同一のアクションが出力される、というのはどっちのフェーズでのことを言ってんの? http://mevius.5ch.net/test/read.cgi/tech/1639713446/647
648: 警備員[Lv.8][新芽] [sage] 2025/01/10(金) 21:16:13.66 ID:0gelnbg2 アクションが出力される、なので 1.です http://mevius.5ch.net/test/read.cgi/tech/1639713446/648
649: デフォルトの名無しさん [sage] 2025/01/10(金) 21:34:10.26 ID:X+hiLHcK なんか理解しているのかすごい怪しいなぁ。 一応回答しておくと、アクションの生成のフェーズなら参照透明性を保証された純粋関数の計算でしかないから main文が同じなら当然同じアクションが生成される。 同じプログラムなら生成されるものも同じという意味で。 理解してたらこんな話出てこないと思うんだけど。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/649
650: 警備員[Lv.1][新芽] [sage] 2025/01/10(金) 22:49:49.12 ID:/2hXYNXu >>649 重ね重ね、ありがとうございます 理解できているかいなかについては、理解が浅いため、確認のために伺わせていただいています 伝わりづらくて申し訳ありませんでしたが、>>649の内容のような理解で正しいかを確認したかったというのが趣旨でした 簡潔に表現していただいて助かりました http://mevius.5ch.net/test/read.cgi/tech/1639713446/650
651: デフォルトの名無しさん [sage] 2025/01/13(月) 17:46:46.07 ID:uTEEqnKb あけなしておめでとうございます 去年は多様性がようやく否定され始めた年ですが、 今年はhaskellの純粋主義のやうに分類・隔離・排除躍進の年となるようがんばりましょう http://mevius.5ch.net/test/read.cgi/tech/1639713446/651
652: デフォルトの名無しさん [sage] 2025/01/15(水) 00:44:26.65 ID:O9bWSOqU マクロな現象には個々人のばらつきを否定する力はない 逆に個人は10回連続でグーを出してみてもたとえば「正規分布に従う」とかなんとかいう法則を反証できない ミクロとマクロを隔離したのはただの統計学であって純粋でも主義でもない http://mevius.5ch.net/test/read.cgi/tech/1639713446/652
653: デフォルトの名無しさん [sage] 2025/01/15(水) 05:29:17.90 ID:QElBeHY8 誰もいまミクロ・マクロの話なんてしてないぞ http://mevius.5ch.net/test/read.cgi/tech/1639713446/653
654: デフォルトの名無しさん [sage] 2025/01/21(火) 22:22:46.92 ID:QQz8h7YM 雪田の英語版買って読んだ勇者はおらんか? http://mevius.5ch.net/test/read.cgi/tech/1639713446/654
655: デフォルトの名無しさん [sage] 2025/01/22(水) 01:14:29.67 ID:SDQT/604 3万も出してよもうとは思わない。 目次読むとKleisli tripleの節はあるのにKleisli categoryの節がなかったり、なぜかその後にMoggi's theoryが出てきたりと 少なくとも構成があんまりいい感じはしない。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/655
656: デフォルトの名無しさん [sage] 2025/01/22(水) 03:57:21.12 ID:ydcqGqD9 まぁ圏論はHaskellやるうえで無駄だしな http://mevius.5ch.net/test/read.cgi/tech/1639713446/656
657: デフォルトの名無しさん [] 2025/01/23(木) 21:00:49.82 ID:j8NlocC3 しかもHaskell自体やるだけ無駄だしな http://mevius.5ch.net/test/read.cgi/tech/1639713446/657
658: デフォルトの名無しさん [] 2025/02/13(木) 07:10:20.44 ID:NHs8kkcw wikiでghc見たら、中の人MSリサーチにいるのな。 最近C#並みに速くなったと思ったら、そういう事か。 納得。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/658
659: デフォルトの名無しさん [sage] 2025/02/13(木) 13:53:19.78 ID:LmH89MFs 暗記系の問題が嫌われるのは答えを隠す意味がないからだが 逆に陰謀論が大人気なのは、隠蔽する動機があるからかもしれない http://mevius.5ch.net/test/read.cgi/tech/1639713446/659
660: デフォルトの名無しさん [sage] 2025/02/13(木) 19:59:58.08 ID:8vmF21CT >>659 誤爆か? 次から気をつけな http://mevius.5ch.net/test/read.cgi/tech/1639713446/660
661: デフォルトの名無しさん [sage] 2025/02/13(木) 21:57:13.74 ID:FvaixK+o わざとだろ。 数板に延々スレ違を書き込む基地外がいるが多分そいつと同一。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/661
662: デフォルトの名無しさん [sage] 2025/02/13(木) 22:11:56.50 ID:LxUFvhMj ワードサラダくん数学板にもいるんか まあいそうな板だな http://mevius.5ch.net/test/read.cgi/tech/1639713446/662
663: デフォルトの名無しさん [sage] 2025/02/13(木) 23:39:39.86 ID:LmH89MFs 有意味な事実と有意味なデマを隔離するのは難しいらしい だが、真でも偽でもないナンセンスはなぜか瞬時に判断できる http://mevius.5ch.net/test/read.cgi/tech/1639713446/663
664: デフォルトの名無しさん [sage] 2025/03/19(水) 11:03:50.18 ID:JUfTLTVZ IntSetのsizeがO(1)じゃなくO(n)なのはなぜですか、O(1)で実装できそうなもんですが http://mevius.5ch.net/test/read.cgi/tech/1639713446/664
665: デフォルトの名無しさん [sage] 2025/03/19(水) 19:45:13.59 ID:4qyoYSYb unionとかで重複要素数えるのが面倒だから必要になるまで数えない http://mevius.5ch.net/test/read.cgi/tech/1639713446/665
666: デフォルトの名無しさん [] 2025/03/19(水) 20:51:01.02 ID:S6mpqhEQ 私は最強ーーすき http://mevius.5ch.net/test/read.cgi/tech/1639713446/666
667: デフォルトの名無しさん [] 2025/03/19(水) 20:52:16.86 ID:S6mpqhEQ 誤爆スマソ。懐メロチャンネルと間違えた http://mevius.5ch.net/test/read.cgi/tech/1639713446/667
668: デフォルトの名無しさん [] 2025/10/08(水) 08:47:56.03 ID:66xUgFQM int* map(int (*f)(const int), const int* array, const int n){ int* p = malloc(sizeof(int) * n); for(int i = 0; i < n; i++) p[i] = f(array[i]); return p; } ふむ、メモリ管理が必要な言語が(見かけ上)副作用のない関数を作ろうとしたら配列を返す関数の時点で関数を使った後は必ずメモリの開放が必要になるのか。 開放が必要だから、参照を持つためにポインタへの保存が必須なので、関数の連続適用(関数合成)は絶望的。 これじゃ、GCやRustみたいな仕組みが必要になるわけだ。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/668
669: デフォルトの名無しさん [sage] 2025/10/08(水) 10:40:05.18 ID:qRy2t+J8 Cで副作用はいうてらんないね。マルチスレッド、再入可能にするところまで出来れば上出来 http://mevius.5ch.net/test/read.cgi/tech/1639713446/669
670: デフォルトの名無しさん [sage] 2025/10/08(水) 13:07:06.38 ID:4LSFWHe4 >>668 30点の理解 http://mevius.5ch.net/test/read.cgi/tech/1639713446/670
671: デフォルトの名無しさん [sage] 2025/10/08(水) 14:05:41.01 ID:JTvRYaZp GC言語はGC使ってる時点で副作用あるやんw メモリ管理他人任せにしてるだけだ http://mevius.5ch.net/test/read.cgi/tech/1639713446/671
672: デフォルトの名無しさん [sage] 2025/10/08(水) 17:42:33.77 ID:1ctt2fBW >>671 −30点 http://mevius.5ch.net/test/read.cgi/tech/1639713446/672
673: デフォルトの名無しさん [] 2025/10/08(水) 18:32:01.08 ID:66xUgFQM >>670 100点満点のご高説をどうぞ。 長文になっても良し。 >>671 実は純粋関数型言語の定義は「副作用も含めて参照透明性が破れていない」なのです。(Wiki調べ) print関数やgetLine関数はどう見ても副作用有るでしょう? でも、モナドのお陰で参照透明性は破れてないんですよ。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/673
674: デフォルトの名無しさん [sage] 2025/10/08(水) 18:44:02.95 ID:N7mcxj5n 副作用は隔離スレへ http://mevius.5ch.net/test/read.cgi/tech/1639713446/674
675: デフォルトの名無しさん [sage] 2025/10/08(水) 18:45:31.77 ID:HFQA1hQ+ なるほどモナドと書き込めばこのスレで副作用の話もできるのですね http://mevius.5ch.net/test/read.cgi/tech/1639713446/675
676: デフォルトの名無しさん [sage] 2025/10/08(水) 23:41:30.24 ID:jkiZK6Mq >>673 ゴールがわからないので100点のご高説は無理だが30点の理由は説明しといてあげる C言語という特定の言語実装における制約がメモリ管理が必要な言語全般に対しても当てはまると考えてるのが根本的な間違い >配列を返す関数の時点で関数を使った後は必ずメモリの開放が必要になるのか。 >>668のコードで(明示的な)メモリ解放が必要になるのはヒープに動的にメモリをアロケートしたからであって配列を返すからではない C言語では配列がfirst classではないので配列をそのまま返すことは不可能 C言語でも構造体ならfirst classなので配列という概念を表現した構造体を作って静的配列を返すようにすれば(明示的な)メモリ開放は不要 C言語にはないがジェネリック等の抽象化機構を備えた言語であれば静的配列を使って任意長の配列に対するmap関数も書ける >開放が必要だから、参照を持つためにポインタへの保存が必須 動的にアロケートするものは実行時になるまで必要なメモリサイズがわからないから言語に関係なくポインタ的なものでしか表現しようがない 動的にアロケートしたものだからポインタが必須、ヒープに動的にアロケートしたものだから後で(明示的な)開放が必要なのであって、開放が必要だからポインタへの保存が必須という因果関係ではない http://mevius.5ch.net/test/read.cgi/tech/1639713446/676
677: デフォルトの名無しさん [] 2025/10/09(木) 02:23:13.64 ID:j1OYGPg+ >>676 確かにメモリ管理が必要な手続き型言語全般というのは広げすぎたかもしれない。 静的な配列を関数内で作ってポインタを返す形で作ると関数を抜ける際に配列の寿命が尽きる。 (通常、それを避けるために結果を格納するためのポインタを引数で渡す) C言語で関数型言語のmap関数みたいな配列を返す関数が作れるか?と考えると動的に作って、使い終わったら解放する形になるのかなと。 ここへの書き込みが長すぎると怒られたので削除したが、構造体で包むという案も考えた。 値渡しだからコピーコストがかさむ。 参照渡しだと生の配列と同じ寿命の問題に突き当たる。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/677
678: デフォルトの名無しさん [sage] 2025/10/09(木) 10:26:59.37 ID:DbxsJTmB >>677 >値渡しだからコピーコストがかさむ。 コンパイラの最適化で不必要なコピーは消える C言語でもそういうことは当たり前にやってる http://mevius.5ch.net/test/read.cgi/tech/1639713446/678
679: デフォルトの名無しさん [sage] 2025/10/09(木) 11:59:08.62 ID:4MZdWW58 仕様化されてるっけ コンパイラの実装次第だと怪しい http://mevius.5ch.net/test/read.cgi/tech/1639713446/679
680: デフォルトの名無しさん [sage] 2025/10/09(木) 17:36:59.11 ID:jE8FE7Nk Cに何を求めてんだよw http://mevius.5ch.net/test/read.cgi/tech/1639713446/680
681: デフォルトの名無しさん [sage] 2025/10/09(木) 17:53:09.88 ID:N3YUsGEr OS開発ですね。メモリも割り込みも何でも見えてしまい、扱わないといけません http://mevius.5ch.net/test/read.cgi/tech/1639713446/681
682: デフォルトの名無しさん [] 2025/10/09(木) 18:19:20.69 ID:j1OYGPg+ >>678 にゃんと!? それを押してもいざ実装してみたら 構造体で配列を包む場合、あらかじめ配列の長さを決めないといけなかった。 struct { int array[1024]; int size; }typedef Array; この1024とかも余分な分は最適化で無くなるっていうなら10万位要素があっても大丈夫なように1GB位(見かけ上)確保したいが、そうでないなら大体の場合、無駄な領域を確保してることになる。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/682
683: デフォルトの名無しさん [] 2025/10/09(木) 18:28:04.54 ID:j1OYGPg+ >>678 ん、まてよ? 最適化で不要なコピーは消えるって言っても、関数プログラミングのmap関数と同じ動きなら、参照元の値は変わったらダメなので参照渡しされたら困るんだが、どんな最適化でコピー(値渡し)で無く、かつ参照渡しでもない状態ってどんな状態? http://mevius.5ch.net/test/read.cgi/tech/1639713446/683
684: デフォルトの名無しさん [sage] 2025/10/09(木) 19:31:35.47 ID:XykzCJ/G Haskellは遅延評価だからmapが配列を返してると言えるかあやしい 一般的な関数型言語だと末尾再帰で不必要になる値を再利用(上書き)する あと値が変更されない(immutable)なら参照渡しで共有しても問題ないし 共有するためにimmutableにすると言っても過言ではない http://mevius.5ch.net/test/read.cgi/tech/1639713446/684
685: デフォルトの名無しさん [] 2025/10/09(木) 19:50:16.02 ID:j1OYGPg+ >>684 うん、遅延評価だから基本参照を返してるはず。バード本参照 (なので>>668を書いてみたわけで) immutableなら a = [1..4] b = map (+1) [1..4] print a print b とうコードで output: [0,1,2,3,4] [1,2,3,4,5] になるはず。 Cで参照を共有すると [1,2,3,4,5] [1,2,3,4,5] という困った表示になってしまう。 というかHaskellでも生のリスト[0..4]とmap (+1) [0..4]は参照を共有してない。 共有してるのは[0..4]だけ。 (むしろ共有してないからこそ「富豪プログラミング」とか言われる) http://mevius.5ch.net/test/read.cgi/tech/1639713446/685
686: デフォルトの名無しさん [] 2025/10/09(木) 20:01:16.79 ID:j1OYGPg+ 言ってみればHaskellは新しい参照をどんどん生み出して、不要になった参照はガンガンGCする。 Cはそういうプログラミングには(当たり前だが)向かないし、当たり前にCの方が効率は良い。 人間が書くコードはHaskellみたく数学に近いほど短くなる。 どっちが良いとかじゃなく、何を優先するかという話。 (なのだなぁと、Cでmap関数もどきを書いて再確認した) http://mevius.5ch.net/test/read.cgi/tech/1639713446/686
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.227s*