- 1 名前:デフォルトの名無しさん [2015/04/09(木) 08:31:01.42 ID:4yjREsCN.net]
- 関数型プログラミング言語 Haskell について語るスレです。
,.-―: ̄`ー::::::::::、 /::::::::::::.::::::::::::::::::::::::::::`::、、 /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、 l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l ヽ:::: ´、ひ> ;: l .<ひ>' 、::::::::/ ヽ:::::  ̄ .)::; l  ̄ l::::/ < 毛の壁(岡部健)の話は禁止な 、:::::.. /:::; .,-、 l:::/、 ,―:::::::: ゝヽ- ー' 、 l::/,、ヽ l,、,、,,:、:: / ,--、,-.、_ l /::::::,、,、l l,、,、,、,、,、::、 `ー ̄-' /:::::::::::,、,、l l,、,、,、,、,、,、::ヽ /::::::::、,、,、,、,ノ:\ haskell.org (公式サイト) www.haskell.org/ 前スレ 関数型プログラミング言語Haskell Part27 peace.2ch.net/test/read.cgi/tech/1420718555/
- 797 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 10:26:38.81 ID:R0ApVOfB.net]
- >>785
そのリンク先の説明は理解できるが 今レスしている人はどの趣旨の説明でもない
- 798 名前:デフォルトの名無しさん [2015/07/03(金) 10:28:25.82 ID:wl7u/SNJ.net]
- IOモナドの表現getCharが複数あってもRealWorldの値が違うので
決してノードが共有されないことに気が付かなかったんですかねえ。 グラフ書換でノードが共有されることと参照透過性との関係が 理解できてない可哀想な子だったか。
- 799 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 10:32:05.52 ID:R0ApVOfB.net]
- あ、すまん確かに3と同じ事いってるね
タプルをRealworld aと勘違いしてた
- 800 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 10:39:21.05 ID:R0ApVOfB.net]
- >>788
よく読んでいなかったよ謝る
- 801 名前:仲本だいすけ [2015/07/03(金) 10:48:00.79 ID:Dt4z3lub.net]
- >>782
ThinkDifferent(笑)
- 802 名前:デフォルトの名無しさん [2015/07/03(金) 10:49:58.03 ID:aSIkPSGQ.net]
- 駱駝さん、アホに構ってんと、仕事しようよ…
- 803 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 11:24:59.81 ID:p7lUbcZE.net]
- > Haskell には副作用はない。なぜなら、Haskell が作るのは命令書のみで、それが実行されるのは Haskell の外での話だからだ。
そういえば、この解釈は酷い解釈だったな
- 804 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 11:35:30.05 ID:8+5j5k8x.net]
- >>793
・副作用は定義した時ではなく実行時に発生する ・引数 (RealWorld) は関数を定義した時ではなく呼び出した時に渡される ほぼ同じ内容だ 同じ内容に優劣をつけるのは言葉遊びだ (遊ぶなとは言っていない)
- 805 名前:仲本だいすけ [2015/07/03(金) 11:39:29.06 ID:TviClge2.net]
- 楽しいから続ける(笑)
- 806 名前:仲本だいすけ [2015/07/03(金) 12:04:29.45 ID:ri2L7Lgt.net]
- ,.-―: ̄`ー::::::::::、
/::::::::::::.::::::::::::::::::::::::::::`::、、 /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、 l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l ヽ:::: ´、ひ> ;: l .<ひ>' 、::::::::/ ヽ:::::  ̄ .)::; l  ̄ l::::/ < 排便ダン 、:::::.. /:::; .,-、 l:::/、 ,―:::::::: ゝヽ- ー' 、 l::/,、ヽ l,、,、,,:、:: / ,--、,-.、_ l /::::::,、,、l l,、,、,、,、,、::、 `ー ̄-' /:::::::::::,、,、l l,、,、,、,、,、,、::ヽ /::::::::、,、,、,、,ノ:\ /⌒\〆', `  ̄ ´ ゝ/⌒\ / ノつ\ ・ ・ /⊂ ヽ! o0○ノ / 3 \ (::::⌒ヽ / とノ\ ヽ○0o ( /、_ノ\ Y `(_、_) / \´ )゚ \_) `ヽ : :;;*:; : : : | (_ノ 人__;;:;;、___ノ ヽヽ ヽヽ ;:;;:;;:;,, ──┐ | | ──┐ | | ∬ ;;:;::.;::.::;::..:;:..: ∬ / | | /. | | ・〜 ;::;.:;:;:;:;:.:;:.:::.;:;:;.:.:.: ノ ノ ┐ ノ ノ ┐ ∬;;;:::;;;:;:.:;:.::.:;;.:.;.:;.:; ∬ ┴ ヽヽ ┴ :"
- 807 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 12:15:29.28 ID:p7lUbcZE.net]
- >>794
ほぼ同じ内容だろうが、それらはどれも酷い解釈だと思うよ
- 808 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 12:36:08.66 ID:IUu1So5+.net]
- 何が酷いの? IOが一級値である以上、最も正確な解釈だと思うが。
- 809 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 12:38:18.64 ID:InleWrcM.net]
- むしろそれ以外に、実際の実行結果に合う解釈はあるのか?
- 810 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 15:16:07.46 ID:msRG1Yik.net]
- >>796
顎の両脇の部分が、後ろで済ませたとぐろ糞に見える
- 811 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 15:58:45.53 ID:Vi+qPEKL.net]
- Prelude> let x = putStrLn "hello" in x >> x
hello hello Prelude> let x = putStrLn "hello" in seq x x hello Prelude>
- 812 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 19:01:10.98 ID:V10CPSDi.net]
- 型=値の集合と思ってると IO でラップされた型は一体どんな値なのかと気にしてしまうんだね。
- 813 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 19:04:32.10 ID:Vi+qPEKL.net]
- >>802 それはIOに限らず抽象データ型一般について言えるかも
- 814 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 21:18:44.48 ID:XD0nd274.net]
- IO aが抽象データ型だとするとb -> IO aがFactoryMethod
IOはコンストラクタが隠蔽されているのだから必然的にそうなる
- 815 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 22:59:59.80 ID:8flj3gJm.net]
- 言いたいことはわかるが空な多相型じゃなくてτ1 -> IO τ2とか書いてくれ(笑)
- 816 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 23:22:54.07 ID:XD0nd274.net]
- そもそも一番肝心な(->)のコンストラクタがない
Haskellの半分以上はコンストラクタやパターンマッチでは説明がつかない
- 817 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 02:18:23.55 ID:XsL/EKLB.net]
- 半分以上のHaskell教えてよ
- 818 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 09:50:27.87 ID:WNuVOXDD.net]
- Haskell は数学を連想させるので絶対流行らん。
- 819 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 10:25:08.25 ID:8ixaKuBt.net]
- >>808
その「ので」が「今日は天気が良い『ので』どこかに出かけよう」ぐらいエエカゲンなんだよなあ
- 820 名前:仲本だいすけ [2015/07/04(土) 10:41:07.54 ID:uNR/QH/o.net]
- ,.-―: ̄`ー::::::::::、
/::::::::::::.::::::::::::::::::::::::::::`::、、 /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、 l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l ヽ:::: ´、ひ> ;: l .<ひ>' 、::::::::/ ヽ:::::  ̄ .)::; l  ̄ l::::/ 、:::::.. /:::; .,-、 l:::/、 :::::::: ゝヽ- ー' 、 l::/, ,:、:: / ,--、,-.、_ l / ,.:':'゙'゙'゙:゙'゙':';. 、::、 `ー ̄-' / r゙ ,.: :;;;:: : : : 、::ヽ /: | : ::::~';::--ー'ー-----ーー;;:'゙ .: :` ‐- 、 | ,i ::::::::::::::::::::::::::::::: ::: :ヾ i r' ::::::::::::::::: : : :::::: ::::: ::::. . / | :::::::::: : : : : ::: :: :: イ i : : ::::::::::: : : ::::::: : | | ,.;イ-- ., ,... -' i i ,.;':/ ゙'ー-.,_ i ,.イ:: / .i:::: /:/  ̄i / ゙i | │:: ノ::/ | i | | r':: イ:::::i゙ | | i | |:: | ヽ '-., ヽ 〈 ヽ ヽ., i, , '-, ゙'ー'ー' ヽ、`,ー、 `'ー'ー'
- 821 名前:デフォルトの名無しさん [2015/07/04(土) 11:47:31.61 ID:D//5Uocc.net]
- 筒井康隆が新潮10月号(9/7発売)に最新長編『モナドの領域』330枚一挙掲載
- 822 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 14:12:51.24 ID:WvwJxr10.net]
- Haskell は門限が7時の女子大生を連想させるので絶対流行らん。
- 823 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 16:46:21.33 ID:rWY2qCze.net]
- Haskell 擬人化するなら眼鏡で想像するひと多そう。
- 824 名前:デフォルトの名無しさん [2015/07/05(日) 03:00:57.48 ID:18u325sL.net]
- jbbs.shitaraba.net/bbs/read.cgi/study/2246/1279896594/534
↑ ↑ ↑ ↑ ↑
- 825 名前:デフォルトの名無しさん mailto:sage [2015/07/05(日) 03:18:53.53 ID:5EFP5F9v.net]
- リンク先政治広告なのでみなくてよろし
- 826 名前:デフォルトの名無しさん mailto:sage [2015/07/05(日) 11:32:05.80 ID:j/NgsVfb.net]
- 長期的に考えるんだ
最初は眼鏡で途中から眼鏡を外せば流行ると考えるんだ
- 827 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 00:22:13.25 ID:wlw6otNx.net]
- 使うメリットが無い。
デメリットは多いのに。
- 828 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 04:07:14.46 ID:W9Wle9it.net]
- 毛を引き寄せてしまった程の黒魔術的魅力がHaskellにあるのだろう
- 829 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 04:12:56.58 ID:G+yljX6j.net]
- goよさそうだなと思って覚え始めたけど型定義が貧弱すぎてやる気大幅ダウン
Haskellは禁断の果実だった
- 830 名前:デフォルトの名無しさん [2015/07/06(月) 10:19:51.08 ID:9VlVzieP.net]
- システムプログラミング言語ならhaskellやった人はgolangよりrust結構気に入るだろうと思う
代数的データ型、型クラス、型推論、immutableがデフォルト、パターンマッチ、 メモリリークをコンパイルエラーにする と結構 ml likeな言語
- 831 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 10:24:54.61 ID:9VlVzieP.net]
- >>818
毛を引き寄せたのはhaskellじゃなくてjsだろ
- 832 名前:デフォルトの名無しさん [2015/07/06(月) 18:54:20.21 ID:yIxlkBRi.net]
- 痴呆症ブログ更新きたよ!
749 名無しさん@ゴーゴーゴーゴー! 2015/07/06(月) 14:17:10.21 ID:IaVh3M450 kenokabe-techwriting.blogspot.jp/2015/07/javascript.html おかえり!入院しろ!
- 833 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 21:10:08.11 ID:EN2KuOqG.net]
- >>820 いいことを聞いた、ちょっと触ってみようかな
- 834 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 21:43:24.49 ID:G+yljX6j.net]
- 普及してる言語の中でミスが起きないよう設計されてるやつが欲しくてさ
Rustは人口少ないしScalaよりさらに関数型で安全そうだけどじゃあHaskellでいいじゃんってなる
- 835 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 22:13:00.63 ID:pYzRJ5bG.net]
- elixirとか
- 836 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 22:38:54.30 ID:/jetTYu7.net]
- 末尾呼び出しが使えないとやる気が出ないね
ループでしか書けないからね
- 837 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 23:08:12.61 ID:G+yljX6j.net]
- 静的型
直和型 再帰型 抽象型 独自(ドメイン固有)型 型推論 ダブルディスパッチ 高階関数 map/filter/fold 末尾再帰最適化 オブジェクト指向でもこれくらいサポートしてほしい
- 838 名前:デフォルトの名無しさん [2015/07/06(月) 23:11:36.25 ID:8//4HfJE.net]
- 相変わらず岡部健の記事は狂ってて面白い
- 839 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 23:28:12.05 ID:IO/OfGDx.net]
- >>824
rustは日本人ユーザが少ないだけでコミュニティは盛り上がってる
- 840 名前:デフォルトの名無しさん [2015/07/07(火) 00:34:34.08 ID:/AiLg+DV.net]
- 岡部が他人のコードを勝手に、不完全に書き換えて実行して
その結果を叩いてるぞ
- 841 名前:デフォルトの名無しさん [2015/07/07(火) 01:15:52.91 ID:6n40dgbK.net]
- 岡部の記事だけを読むと、説得されかけるのは疲れているからだろうか?
- 842 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 01:30:24.54 ID:0l2OmbIX.net]
- >>824
rustはc,c++と同じ低レベルプログラミング言語だから haskell、scalaとは被らないよ
- 843 名前:デフォルトの名無しさん [2015/07/07(火) 01:44:46.81 ID:5T5xC6ja.net]
- 「ミスが起きない」の意味が違う
- 844 名前:だよな。
HaskellとRustでは型に意図された機能がぜんぜん違う。 [] - [ここ壊れてます]
- 845 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 04:38:19.84 ID:wEQ5fYPF.net]
- >>833
どういう部分が? 所有権という概念が入るだけで、型付けは結構強めだと思うが
- 846 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 05:07:24.51 ID:wEQ5fYPF.net]
- >>831
洗脳…ですかね
- 847 名前:デフォルトの名無しさん [2015/07/07(火) 08:27:24.02 ID:5T5xC6ja.net]
- >>834
Rustは高階カインドやGADT使えないでしょ。モナドすらない。 だけど線形型は使えて(所有権)、要するに基本のHindley-Milner systemからの 強化方向とその背景にある思想が全然違う。 データの構造に対する表現力を求めるのとリソース管理を求めるのと。 なおどっちも突っ込むと人智を超え始めるのはATSを見ればお分かりの通り。
- 848 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 08:30:37.69 ID:6KFd5cV4.net]
- Rustは低レベルな世界に関数型の表現力と安全性を持ち込もうとしている言語。
最初はOCamlで開発されていたからか、letとかOptionとかML系の匂いはする。 ただし簡潔さよりもゼロオーバーヘッドを優先しているから、冗長な表記が多々含まれる。 あと型推論は関数定義内だけに適用されるから、エラーメッセージが見当外れの場所を指さない一方、 borrow checkerのエラーはすごく把握しづらい。impl書いている時は特に。 自分がいかにGCに依存し、リソース管理を怠っていたかをこれでもかという程思い知らせてくる言語。
- 849 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 08:31:10.23 ID:bP16dll8.net]
- Rustなんて放り投げてATSやろうぜ!
- 850 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 11:38:06.78 ID:ZG49EUnh.net]
- これが超えちゃいけないラインってやつか
トランポリンとかモナドとかよりもっと抽象度高い系の片鱗を味わったぜ
- 851 名前:デフォルトの名無しさん [2015/07/07(火) 12:46:53.46 ID:KLvjH7rL.net]
- 岡部健・・・・・・。
- 852 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 15:14:42.99 ID:kS7BAnfS.net]
- >>838
岡部究(master_q)さん、暇なんですか?
- 853 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 15:31:19.79 ID:AZjd+yQY.net]
- ParsecとTrifectaってどう違うの?
- 854 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 15:36:54.07 ID:kS7BAnfS.net]
- >>842
Parsec の改良実装が Trifecta だそうです(TwitterのTL調べ)
- 855 名前:デフォルトの名無しさん [2015/07/07(火) 16:41:16.20 ID:kvoehb1f.net]
- まさかUCLA卒の情報技術者を自称する岡部が、
メモリを食いつぶしてることの裏を取ってないわけねーだろ。 これには何か事情があるんだろう。
- 856 名前:デフォルトの名無しさん [2015/07/07(火) 16:44:08.49 ID:kvoehb1f.net]
- まとめ:
岡部「破壊的代入を使わないクリックカウンターやお絵かきロジック(マウスのドラッグ)はFRP(自称)でなければ書けない」 →OCamlでもHaskellでも瞬殺 →岡部「再帰でメモリリーク(※スタックオーバーフローの意)する」 →末尾再帰なのでスタックオーバーフローしないし、実際のメモリ消費量も増えていない。 岡部の示した「証拠画面」はメモリ不足ではなくプロセスを強制終了しただけ。
- 857 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 16:57:06.07 ID:AzQt5h10.net]
- マジで末尾再帰の最適化を知らなかったのか、kenokabe独自定義で違う意味なのか、どっちなんだ?
前者だとちょっとガッカリ…
- 858 名前:デフォルトの名無しさん [2015/07/07(火) 17:57:25.43 ID:T57Vd7z3.net]
- メモリリークはバズワードであってだね・・・・
- 859 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 18:14:46.72 ID:50EUtPEU.net]
- kenokabeさんはもう許されていいとおもう
- 860 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 18:17:56.32 ID:Ra6qpxUV.net]
- Haskellは強制されても習得できない難しい言語だからこそ非人道的事案は少ない
それに比べて関数型という安易な言葉に苦しめられる人は多い
- 861 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 20:57:42.46 ID:strljqHr.net]
- どこかのスレでツリートラバースするのに再帰を使うのは良くないマナーと書いたら、
末尾再帰と言われたのだが。
- 862 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 00:23:41.84 ID:D8OEoYJf.net]
- >> 850
なぜ良くないの?
- 863 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 00:43:21.45 ID:lu3S4Qgm.net]
- >>>845
OCaml版はloop_at_exit使ってるのがダメと指摘されますた>< Graphics.wait_next_eventかGraphics_js.loop使ってください
- 864 名前:デフォルトの名無しさん [2015/07/08(水) 01:57:29.30 ID:T1Ir4r2m.net]
- >>845
末尾再帰はあのコード例では関係なくて、イベントハンドラを経由したtrampolineになってるのでスタックオーバーフローしない、が正しそう。
- 865 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 03:26:31.55 ID:gcJIUX06.net]
- >>851
末尾再帰の最適化がかからない言語は使うべきではないともレスがあったな。
- 866 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 05:37:16.57 ID:D8OEoYJf.net]
- >> 854
よく分かりませんが、ところで、あなたにレスを見て気になって、調べて初めて知りました。 Haskellって末尾再帰の最適化って無いんだね。 ずっと勘違いしてた。気付かせてくれてありがとう。
- 867 名前:デフォルトの名無しさん [2015/07/08(水) 06:38:51.11 ID:k4MH4D3R.net]
- >>855
>Haskellって末尾再帰の最適化って無いんだね TCOが無いんじゃなくて、あくまでサンクの問題。
- 868 名前:デフォルトの名無しさん [2015/07/08(水) 07:15:31.29 ID:asOwE27P.net]
- parsecとtrifectaは比較するようなものじゃないよ
- 869 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 08:22:34.09 ID:SmYj13jC.net]
- >>857
kwsk
- 870 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 08:29:06.72 ID:gcJIUX06.net]
- >>855
そもそも最適化が無い言語とはC言語のことで、Cは使うなHaskellを使えと言う話だったのだが。
- 871 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 08:53:04.13 ID:Hcg+sLDh.net]
- Haskellでサンクをインライン展開する最適化ってできるんじゃねえの
サンクが末尾にあったらTCOと同じだろ
- 872 名前:デフォルトの名無しさん [2015/07/08(水) 09:03:37.61 ID:k4MH4D3R.net]
- >>860
できる。ghcなら-O2つければいい。
- 873 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 09:44:23.49 ID:gcJIUX06.net]
- そもそも、Cの関数呼び出しはアドレスを指定してジャンプ、ループは
オフセットを指定してジャンプ程度の違いしかないので、インストラクションに 関しては大して違いが無いのだが。 どうもハスケラーは関係ないことを指摘して、「だから◯◯はダメだ」と言い出す 傾向が強い。
- 874 名前:デフォルトの名無しさん [2015/07/08(水) 10:56:59.54 ID:k4MH4D3R.net]
- そりゃTCO効いた後なら違いは殆どなくなるにきまってる。
- 875 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 11:02:57.48 ID:Mh0VppoT.net]
- 「そもそも、Cの関数呼び出しはアドレスを指定してジャンプ、ループは
オフセットを指定してジャンプ程度の違いしかないので」 はあ???
- 876 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 11:10:43.42 ID:+0ZOrsx3.net]
- >>863
「TCO効いた後なら」同じだが、>>862 は「Cの関数呼び出し」と言ってるから Cも関数呼び出しもまったくわかってない。プログラムわからないんだったら出てくんな。
- 877 名前:デフォルトの名無しさん [2015/07/08(水) 11:28:35.90 ID:k4MH4D3R.net]
- >>865
まさかスタック積むことすらわかってないとかなんかね?
- 878 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 15:11:37.94 ID:TEEbED7E.net]
- 久しぶりにきたら荒れてるな
Haskellは破壊的代入をしようとすると面倒なのがつらい。 巨大な1次元配列の任意の場所を参照しながら大量に書き換える処理とか 純粋性を保ったままやろうとすると凄いことになる。 *例えば画像データの一部に別の画像をmixするとか
- 879 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 16:24:24.26 ID:Eo9ZYfU/.net]
- >>866
スタックに引数、戻り値と積んでからジャンプするんだから、アドレスを渡す 関数ならスタックは積む必要が無い。 再帰してるんだから。 ハスケラはどうも自分は天才で自分以外は全員馬鹿と思い込む傾向がある。
- 880 名前:デフォルトの名無しさん [2015/07/08(水) 16:25:04.00 ID:Fj3AV/LF.net]
- 相変わらず殺伐としている。
いつものマウンティング合戦。
- 881 名前:デフォルトの名無しさん [2015/07/08(水) 16:26:57.55 ID:Fj3AV/LF.net]
- 多分、ハスケラではなくオカマラーだよ。
なぜかオカマちゃんが出没するのだ。
- 882 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 16:51:49.63 ID:TEEbED7E.net]
- ハスケラと一緒に仕事したい(自社製品を一緒につくりたい)けど
怖い人多そうで誘いづらい
- 883 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:09:26.71 ID:F0vddBGo.net]
- 「Cも関数呼び出しもまったくわかってない。プログラムわからないんだったら出てくんな。」
「まさかスタック積むことすらわかってないとかなんかね? 」 毎日こんなこと言われると思う。
- 884 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:22:12.92 ID:TEEbED7E.net]
- なにそれ怖い
製品完成する前に心折られそう
- 885 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:24:08.22 ID:g9xxt+x4.net]
- 「そもそも、Cの関数呼び出しはアドレスを指定してジャンプ、ループはオフセットを指定してジャンプ程度の違いしかないので」 とか
「スタックに引数、戻り値と積んでからジャンプするんだから、アドレスを渡す関数ならスタックは積む必要が無い。再帰してるんだから。」とか (しかもTCOの話をしてるのに)、本当にCも関数呼び出しもわかってない知ったかぶりがHaskellerを中傷してるだけ。 それ以上でもそれ以下でもない。
- 886 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:29:09.36 ID:TEEbED7E.net]
- 穏やかなハスケラいないかな
簡単なプログラムができる程度の初心者でもいいんだけど 一緒に自社製品つくりたい (ただし売上あるまで一緒に無給)
- 887 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:33:01.82 ID:3bDYKzqv.net]
- >>874
どうもハスケラーは関係ないことを指摘して、「だから◯◯はダメだ」と言い出す 傾向が強い。
- 888 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:34:43.10 ID:3bDYKzqv.net]
- 最後には「Javaの話ししてるのにJavascriptと勘違いしている」などと言い出しそうだな。
- 889 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:37:24.50 ID:ikFma15C.net]
- わかってないから馬鹿にされてるんじゃなくて、
わかってないのに自覚せず威張ってるから馬鹿にされてるんだが…。 そういう奴がいて、間違いを指摘すると逆ギレされる職場とか絶対嫌。
- 890 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:39:55.04 ID:coR9sNH7.net]
- 末尾呼び出し最適化は再帰だけじゃないよ
- 891 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:46:11.37 ID:TEEbED7E.net]
- 馬鹿にするのも逆ギレもよくないとおもう
そしてこのスレが荒れるのも彼の呪いじゃないかとおもう もうそっとしておくのが一番いいとおもう
- 892 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:48:42.74 ID:3bDYKzqv.net]
- 「Cは再帰の最適化が無いから使うべきではない、Haskell使え」と言う話に、
Cは再帰の最適化が必要ないのに何言ってんの?と答えた。
- 893 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:54:30.07 ID:3bDYKzqv.net]
- Haskellの最適化って他の言語では必要ないものでしょ。
「遅延呼び出しによって必要のない計算を無くせるスゴイ!」 他の言語では最初から必要ない計算はしないからそんな最適化は必要ない。 自らゴミを持ち込んで 「ゴミを減らせたスゴイ!Cはゴミを減らせないから使うべきでない!」 とか言い出すのがハスケラー。
- 894 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:54:46.50 ID:jdKxxZpi.net]
- いろいろと誤解している気がする
- 895 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 18:02:40.05 ID:7bDc6WAX.net]
- まず、末尾再帰をループに変換する最適化は、CでもHaskellでも可能で、実際にGCCでもやってる。
それはさておき、Cではループを末尾再帰で書いたりしないから、そんな最適化はいらない、という意見もそれはそれでわかる。 末尾再帰使わないのに、末尾再帰最適化がないからダメ、なんて言ってる奴がいたらそいつがおかしいので具体的ソース希望。
- 896 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 18:11:09.96 ID:LC6Y88mm.net]
- 必死に藁人形作ってるだけだから構ったら駄目だよ
末尾再帰最適化を知ってて制御構文を知らないなんて そんな支離滅裂な馬鹿を前提としてる時点で察しろと
- 897 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 18:13:26.90 ID:7bDc6WAX.net]
- で、CでもHaskellでも、末尾呼び出し最適化されていない普通の関数呼び出しは、
戻り番地や、まだ使う変数をセーブしておくためにスタックを消費する。 (引数渡しにスタックを使うこともあるけど、そうでなくても) (再帰でも、再帰でなくても)末尾呼び出しの場合、そのセーブが不要なので、 ただのジャンプ(と引数のセット)だけに最適化できる。 この最適化は関数型言語の処理系では普通は実装されている。 Cでも全くできないことはないと思うが、いろいろ面倒そうなので やってるコンパイラは寡聞にして知らない。
|

|