15/07/07 12:46:53.46 KLvjH7rL.net
岡部健・・・・・・。
852:デフォルトの名無しさん
15/07/07 15:14:42.99 kS7BAnfS.net
>>838
岡部究(master_q)さん、暇なんですか?
853:デフォルトの名無しさん
15/07/07 15:31:19.79 AZjd+yQY.net
ParsecとTrifectaってどう違うの?
854:デフォルトの名無しさん
15/07/07 15:36:54.07 kS7BAnfS.net
>>842
Parsec の改良実装が Trifecta だそうです(TwitterのTL調べ)
855:デフォルトの名無しさん
15/07/07 16:41:16.20 kvoehb1f.net
まさかUCLA卒の情報技術者を自称する岡部が、
メモリを食いつぶしてることの裏を取ってないわけねーだろ。
これには何か事情があるんだろう。
856:デフォルトの名無しさん
15/07/07 16:44:08.49 kvoehb1f.net
まとめ:
岡部「破壊的代入を使わないクリックカウンターやお絵かきロジック(マウスのドラッグ)はFRP(自称)でなければ書けない」
→OCamlでもHaskellでも瞬殺
→岡部「再帰でメモリリーク(※スタックオーバーフローの意)する」
→末尾再帰なのでスタックオーバーフローしないし、実際のメモリ消費量も増えていない。
岡部の示した「証拠画面」はメモリ不足ではなくプロセスを強制終了しただけ。
857:デフォルトの名無しさん
15/07/07 16:57:06.07 AzQt5h10.net
マジで末尾再帰の最適化を知らなかったのか、kenokabe独自定義で違う意味なのか、どっちなんだ?
前者だとちょっとガッカリ…
858:デフォルトの名無しさん
15/07/07 17:57:25.43 T57Vd7z3.net
メモリリークはバズワードであってだね・・・・
859:デフォルトの名無しさん
15/07/07 18:14:46.72 50EUtPEU.net
kenokabeさんはもう許されていいとおもう
860:デフォルトの名無しさん
15/07/07 18:17:56.32 Ra6qpxUV.net
Haskellは強制されても習得できない難しい言語だからこそ非人道的事案は少ない
それに比べて関数型という安易な言葉に苦しめられる人は多い
861:デフォルトの名無しさん
15/07/07 20:57:42.46 strljqHr.net
どこかのスレでツリートラバースするのに再帰を使うのは良くないマナーと書いたら、
末尾再帰と言われたのだが。
862:デフォルトの名無しさん
15/07/08 00:23:41.84 D8OEoYJf.net
>> 850
なぜ良くないの?
863:デフォルトの名無しさん
15/07/08 00:43:21.45 lu3S4Qgm.net
>>>845
OCaml版はloop_at_exit使ってるのがダメと指摘されますた><
Graphics.wait_next_eventかGraphics_js.loop使ってください
864:デフォルトの名無しさん
15/07/08 01:57:29.30 T1Ir4r2m.net
>>845
末尾再帰はあのコード例では関係なくて、イベントハンドラを経由したtrampolineになってるのでスタックオーバーフローしない、が正しそう。
865:デフォルトの名無しさん
15/07/08 03:26:31.55 gcJIUX06.net
>>851
末尾再帰の最適化がかからない言語は使うべきではないともレスがあったな。
866:デフォルトの名無しさん
15/07/08 05:37:16.57 D8OEoYJf.net
>> 854
よく分かりませんが、ところで、あなたにレスを見て気になって、調べて初めて知りました。
Haskellって末尾再帰の最適化って無いんだね。
ずっと勘違いしてた。気付かせてくれてありがとう。
867:デフォルトの名無しさん
15/07/08 06:38:51.11 k4MH4D3R.net
>>855
>Haskellって末尾再帰の最適化って無いんだね
TCOが無いんじゃなくて、あくまでサンクの問題。
868:デフォルトの名無しさん
15/07/08 07:15:31.29 asOwE27P.net
parsecとtrifectaは比較するようなものじゃないよ
869:デフォルトの名無しさん
15/07/08 08:22:34.09 SmYj13jC.net
>>857
kwsk
870:デフォルトの名無しさん
15/07/08 08:29:06.72 gcJIUX06.net
>>855
そもそも最適化が無い言語とはC言語のことで、Cは使うなHaskellを使えと言う話だったのだが。
871:デフォルトの名無しさん
15/07/08 08:53:04.13 Hcg+sLDh.net
Haskellでサンクをインライン展開する最適化ってできるんじゃねえの
サンクが末尾にあったらTCOと同じだろ
872:デフォルトの名無しさん
15/07/08 09:03:37.61 k4MH4D3R.net
>>860
できる。ghcなら-O2つければいい。
873:デフォルトの名無しさん
15/07/08 09:44:23.49 gcJIUX06.net
そもそも、Cの関数呼び出しはアドレスを指定してジャンプ、ループは
オフセットを指定してジャンプ程度の違いしかないので、インストラクションに
関しては大して違いが無いのだが。
どうもハスケラーは関係ないことを指摘して、「だから◯◯はダメだ」と言い出す
傾向が強い。
874:デフォルトの名無しさん
15/07/08 10:56:59.54 k4MH4D3R.net
そりゃTCO効いた後なら違いは殆どなくなるにきまってる。
875:デフォルトの名無しさん
15/07/08 11:02:57.48 Mh0VppoT.net
「そもそも、Cの関数呼び出しはアドレスを指定してジャンプ、ループは
オフセットを指定してジャンプ程度の違いしかないので」
はあ???
876:デフォルトの名無しさん
15/07/08 11:10:43.42 +0ZOrsx3.net
>>863
「TCO効いた後なら」同じだが、>>862 は「Cの関数呼び出し」と言ってるから
Cも関数呼び出しもまったくわかってない。プログラムわからないんだったら出てくんな。
877:デフォルトの名無しさん
15/07/08 11:28:35.90 k4MH4D3R.net
>>865
まさかスタック積むことすらわかってないとかなんかね?
878:デフォルトの名無しさん
15/07/08 15:11:37.94 TEEbED7E.net
久しぶりにきたら荒れてるな
Haskellは破壊的代入をしようとすると面倒なのがつらい。
巨大な1次元配列の任意の場所を参照しながら大量に書き換える処理とか
純粋性を保ったままやろうとすると凄いことになる。
*例えば画像データの一部に別の画像をmixするとか
879:デフォルトの名無しさん
15/07/08 16:24:24.26 Eo9ZYfU/.net
>>866
スタックに引数、戻り値と積んでからジャンプするんだから、アドレスを渡す
関数ならスタックは積む必要が無い。
再帰してるんだから。
ハスケラはどうも自分は天才で自分以外は全員馬鹿と思い込む傾向がある。
880:デフォルトの名無しさん
15/07/08 16:25:04.00 Fj3AV/LF.net
相変わらず殺伐としている。
いつものマウンティング合戦。
881:デフォルトの名無しさん
15/07/08 16:26:57.55 Fj3AV/LF.net
多分、ハスケラではなくオカマラーだよ。
なぜかオカマちゃんが出没するのだ。
882:デフォルトの名無しさん
15/07/08 16:51:49.63 TEEbED7E.net
ハスケラと一緒に仕事したい(自社製品を一緒につくりたい)けど
怖い人多そうで誘いづらい
883:デフォルトの名無しさん
15/07/08 17:09:26.71 F0vddBGo.net
「Cも関数呼び出しもまったくわかってない。プログラムわからないんだったら出てくんな。」
「まさかスタック積むことすらわかってないとかなんかね? 」
毎日こんなこと言われると思う。
884:デフォルトの名無しさん
15/07/08 17:22:12.92 TEEbED7E.net
なにそれ怖い
製品完成する前に心折られそう
885:デフォルトの名無しさん
15/07/08 17:24:08.22 g9xxt+x4.net
「そもそも、Cの関数呼び出しはアドレスを指定してジャンプ、ループはオフセットを指定してジャンプ程度の違いしかないので」 とか
「スタックに引数、戻り値と積んでからジャンプするんだから、アドレスを渡す関数ならスタックは積む必要が無い。再帰してるんだから。」とか
(しかもTCOの話をしてるのに)、本当にCも関数呼び出しもわかってない知ったかぶりがHaskellerを中傷してるだけ。
それ以上でもそれ以下でもない。
886:デフォルトの名無しさん
15/07/08 17:29:09.36 TEEbED7E.net
穏やかなハスケラいないかな
簡単なプログラムができる程度の初心者でもいいんだけど
一緒に自社製品つくりたい
(ただし売上あるまで一緒に無給)
887:デフォルトの名無しさん
15/07/08 17:33:01.82 3bDYKzqv.net
>>874
どうもハスケラーは関係ないことを指摘して、「だから◯◯はダメだ」と言い出す
傾向が強い。
888:デフォルトの名無しさん
15/07/08 17:34:43.10 3bDYKzqv.net
最後には「Javaの話ししてるのにJavascriptと勘違いしている」などと言い出しそうだな。
889:デフォルトの名無しさん
15/07/08 17:37:24.50 ikFma15C.net
わかってないから馬鹿にされてるんじゃなくて、
わかってないのに自覚せず威張ってるから馬鹿にされてるんだが…。
そういう奴がいて、間違いを指摘すると逆ギレされる職場とか絶対嫌。
890:デフォルトの名無しさん
15/07/08 17:39:55.04 coR9sNH7.net
末尾呼び出し最適化は再帰だけじゃないよ
891:デフォルトの名無しさん
15/07/08 17:46:11.37 TEEbED7E.net
馬鹿にするのも逆ギレもよくないとおもう
そしてこのスレが荒れるのも彼の呪いじゃないかとおもう
もうそっとしておくのが一番いいとおもう
892:デフォルトの名無しさん
15/07/08 17:48:42.74 3bDYKzqv.net
「Cは再帰の最適化が無いから使うべきではない、Haskell使え」と言う話に、
Cは再帰の最適化が必要ないのに何言ってんの?と答えた。
893:デフォルトの名無しさん
15/07/08 17:54:30.07 3bDYKzqv.net
Haskellの最適化って他の言語では必要ないものでしょ。
「遅延呼び出しによって必要のない計算を無くせるスゴイ!」
他の言語では最初から必要ない計算はしないからそんな最適化は必要ない。
自らゴミを持ち込んで
「ゴミを減らせたスゴイ!Cはゴミを減らせないから使うべきでない!」
とか言い出すのがハスケラー。
894:デフォルトの名無しさん
15/07/08 17:54:46.50 jdKxxZpi.net
いろいろと誤解している気がする
895:デフォルトの名無しさん
15/07/08 18:02:40.05 7bDc6WAX.net
まず、末尾再帰をループに変換する最適化は、CでもHaskellでも可能で、実際にGCCでもやってる。
それはさておき、Cではループを末尾再帰で書いたりしないから、そんな最適化はいらない、という意見もそれはそれでわかる。
末尾再帰使わないのに、末尾再帰最適化がないからダメ、なんて言ってる奴がいたらそいつがおかしいので具体的ソース希望。
896:デフォルトの名無しさん
15/07/08 18:11:09.96 LC6Y88mm.net
必死に藁人形作ってるだけだから構ったら駄目だよ
末尾再帰最適化を知ってて制御構文を知らないなんて
そんな支離滅裂な馬鹿を前提としてる時点で察しろと
897:デフォルトの名無しさん
15/07/08 18:13:26.90 7bDc6WAX.net
で、CでもHaskellでも、末尾呼び出し最適化されていない普通の関数呼び出しは、
戻り番地や、まだ使う変数をセーブしておくためにスタックを消費する。
(引数渡しにスタックを使うこともあるけど、そうでなくても)
(再帰でも、再帰でなくても)末尾呼び出しの場合、そのセーブが不要なので、
ただのジャンプ(と引数のセット)だけに最適化できる。
この最適化は関数型言語の処理系では普通は実装されている。
Cでも全くできないことはないと思うが、いろいろ面倒そうなので
やってるコンパイラは寡聞にして知らない。
898:デフォルトの名無しさん
15/07/08 18:14:38.28 3bDYKzqv.net
>>884
変換する最適化という言い方が、ハスケラーっぽいなあ。
Cは積む必要のないものは積まないんだから。
スタックに何も積まなければループも関数呼び出しも大した違いは無い。
そういうわけでこれからは、最適化しないと使い物にならないHaskellと考えていただこう。
899:デフォルトの名無しさん
15/07/08 18:14:42.05 7bDc6WAX.net
>>885 スマソ。何となくちゃんと説明しないと俺の気が済まなかった。
900:デフォルトの名無しさん
15/07/08 18:17:33.59 7bDc6WAX.net
(末尾呼び出し最適化されていない)関数呼び出しでスタックに積むものはCでもHaskellでも同じ。
戻り番地と、生きている変数と、レジスタに入りきらない引数。
901:デフォルトの名無しさん
15/07/08 18:27:23.28 Fj3AV/LF.net
マウンティングする奴は、マウンティングすることが目的だから、生産性は
低い。学者さんに多いタイプ。アカハラ怖い。
902:デフォルトの名無しさん
15/07/08 18:27:27.64 LC6Y88mm.net
>>887
????
Cもfastcallじゃない限り戻りアドレス積むよ
903:デフォルトの名無しさん
15/07/08 18:28:15.90 LC6Y88mm.net
しまった同じやつだった…
904:デフォルトの名無しさん
15/07/08 18:39:15.89 2M74HMLS.net
馬鹿とは議論するな。傍目にはどちらが馬鹿か判りにくい
905:デフォルトの名無しさん
15/07/08 18:50:26.80 7bDc6WAX.net
本当に混乱してる人もいるかもしれないし、説明のまとめだけ…
884 :デフォルトの名無しさん:2015/07/08(水) 18:02:40.05 ID:7bDc6WAX
まず、末尾再帰をループに変換する最適化は、CでもHaskellでも可能で、実際にGCCでもやってる。
それはさておき、Cではループを末尾再帰で書いたりしないから、そんな最適化はいらない、という意見もそれはそれでわかる。
末尾再帰使わないのに、末尾再帰最適化がないからダメ、なんて言ってる奴がいたらそいつがおかしいので具体的ソース希望。
886 :デフォルトの名無しさん:2015/07/08(水) 18:13:26.90 ID:7bDc6WAX
で、CでもHaskellでも、末尾呼び出し最適化されていない普通の関数呼び出しは、
戻り番地や、まだ使う変数をセーブしておくためにスタックを消費する。
(引数渡しにスタックを使うこともあるけど、そうでなくても)
(再帰でも、再帰でなくても)末尾呼び出しの場合、そのセーブが不要なので、
ただのジャンプ(と引数のセット)だけに最適化できる。
この最適化は関数型言語の処理系では普通は実装されている。
Cでも全くできないことはないと思うが、いろいろ面倒そうなので
やってるコンパイラは寡聞にして知らない。
889 :デフォルトの名無しさん:2015/07/08(水) 18:17:33.59 ID:7bDc6WAX
(末尾呼び出し最適化されていない)関数呼び出しでスタックに積むものはCでもHaskellでも同じ。
戻り番地と、生きている変数と、レジスタに入りきらない引数。 👀
Rock54: Caution(BBR-MD5:405b7f1af0f5a85b432d79fa769e9aeb)
906:デフォルトの名無しさん
15/07/08 19:00:46.58 Hcg+sLDh.net
ループを無くす理由の一つはnullを無くしたかったから
nullは不要 → 初期化と代入の区別が必要 → 面倒だから代入も不要 → ループも不要
907:デフォルトの名無しさん
15/07/08 19:03:01.21 7bDc6WAX.net
じゃあ、そもそもなんでループをわざわざ末尾再帰で書くの?という疑問は当然だけど、
ループで書くと破壊的代入が必要になるから、関数的に書くと自然に末尾再帰になる。
なので関数型プログラミングをするなら末尾再帰最適化は必須だし、
実際に(再帰以外の末尾呼び出しの最適化も)まともな処理系はみんな実装してる。
関数型言語では必須かつ簡単な最適化なので。
908:デフォルトの名無しさん
15/07/08 19:04:06.48 7bDc6WAX.net
>>895 すまん前後した
909:デフォルトの名無しさん
15/07/08 20:23:51.51 oVqSZ92L.net
>>886
vcは引数が全く同じ関数の末尾呼び出しをgotoにするよ。
910:デフォルトの名無しさん
15/07/08 20:46:18.84 7bDc6WAX.net
>>898 「引数が全く同じ」ってことは、末尾再帰だよね?
末尾再帰は>>884にあるとおりGCCも(引数が違っても)最適化してる。
>>886は再帰以外の末尾呼び出しの話だった。
一続きだったんだが、独立して読むと明示されてないね。
>>894でまとめて読んでくれ。すまん。
911:デフォルトの名無しさん
15/07/08 22:36:48.90 oVqSZ92L.net
>>899
いいや、tail callだよ。
912:デフォルトの名無しさん
15/07/08 22:53:06.86 TEEbED7E.net
VSにHaskell用プラグインを組み込むプロジェクト進んでるのかな?
マジで早く使いたいんだけど
913:デフォルトの名無しさん
15/07/08 23:02:56.60 zrPw7vNx.net
ここまでを簡単に解説すると、ハスケラはシッタカブラー。
914:デフォルトの名無しさん
15/07/08 23:32:53.31 oVqSZ92L.net
>>899
ほらよ。
int foo(char *, int);
int bar(char *a, int b)
{
return foo(a + 10, b - 10);
}
_bar PROC ; COMDAT
mov eax, DWORD PTR _b$[esp-4]
add eax, -10 ; fffffff6H
mov DWORD PTR _b$[esp-4], eax
add DWORD PTR _a$[esp-4], 10 ; 0000000aH
jmp _foo
915:899
15/07/09 05:48:11.05 KPxfvpRW.net
>>903 おお! 「引数が全く同じ」って、値じゃなくて、数や型が同じってことね。サンクス。
逆に、なんで引数の数や型が同じじゃないといけないの? スタックポインタの調整が面倒だから?
916:899
15/07/09 05:57:34.42 KPxfvpRW.net
いつのまにかGCCも末尾再帰じゃない末尾呼び出し最適化もやってた。引数の数や型が違っても。
Cでも需要があるのかな。
extern int foo(int);
int bar(char *a)
{
return foo(10);
}
bar:
.LFB0:
.cfi_startproc
movl $10, %edi
jmp foo
.cfi_endproc
917:899
15/07/09 06:13:19.89 KPxfvpRW.net
URLリンク(www.drdobbs.com)
にGCCがTCOする条件が解説されてた。Cだとややこしいけど需要はあるらしい。
連投&スレ違い失礼しますた。
918:デフォルトの名無しさん
15/07/09 06:35:27.16 OEKsJpEx.net
>>904
>「引数が全く同じ」って、値じゃなくて、数や型が同じってことね。サンクス。
再帰で値が同じならそれは無限再帰と呼ばれる。
>逆に、なんで引数の数や型が同じじゃないといけないの? スタックポインタの調整が面倒だから?
引数の個数はcalleeではわからないから、面倒ではなく、出来ない。
919:デフォルトの名無しさん
15/07/09 08:19:53.49 e+1UNYHr.net
>>907
>再帰で値が同じならそれは無限再帰と呼ばれる。
Cだと副作用でメモリの中身が変わってるかもしれない
>引数の個数はcalleeではわからないから、面倒ではなく、出来ない。
Cだと同じ関数の型の見え方がcallerとcalleeで違ったりするからね。
>>906みたく条件緩和できるがなかなかややこしい
920:デフォルトの名無しさん
15/07/09 09:12:59.14 LXpNU/xq.net
>>901
VSの色んな機能を使えるなら欲しいけど、vimやemacsのプラグインと同じ事しか出来ないならいらん
921:デフォルトの名無しさん
15/07/09 10:48:24.29 h1Dw9jX8.net
デバッガ観点で言うと末尾呼び出しの最適化されると
バックトレースが不正確になるのでやっかい
大規模な開発ではあえて無効にされることもあるよ
922:デフォルトの名無しさん
15/07/09 10:56:32.05 sAbBvj66.net
>>909
使えないの・・・?(´・ω・`)
詳細しらないけどきっと使えるんじゃね?
VSのデバッガ使いたい
923:デフォルトの名無しさん
15/07/10 07:10:09.65 0h1M+LeE.net
CSS使えない奴よりマシ
924:デフォルトの名無しさん
15/07/10 10:31:36.54 j3g7NrlE.net
(A -> R) -> R は継続モナドになるわけだが、
R -> A や A -> R もモナドにできるの?
925:デフォルトの名無しさん
15/07/10 11:04:46.48 XOUMSF+T.net
CSSいらない
>>913
m (r -> a)
m (a -> r)
モナドにしたったで
926:デフォルトの名無しさん
15/07/10 12:28:35.80 j3g7NrlE.net
>>914
returnと>>=はそれぞれどうなるの?
927:デフォルトの名無しさん
15/07/10 13:29:21.43 NSmmAGhS.net
>>915
つうか
(-> R A)と(-> A R)で普通に関数モナドな。
return = const
(>>=) f g = ¥x -> g ( f x ) x
928:デフォルトの名無しさん
15/07/10 13:50:04.51 j3g7NrlE.net
(-> R A)はそれで分かったが、
(-> A R)のreturnと>>=は?
929:デフォルトの名無しさん
15/07/10 16:23:11.40 NSmmAGhS.net
>>917
>(-> R A)はそれで分かったが、
>(-> A R)のreturnと>>=は?
あたま大丈夫?
930:デフォルトの名無しさん
15/07/10 18:30:43.38 j3g7NrlE.net
は?
931:デフォルトの名無しさん
15/07/10 19:04:13.42 l6c5ofse.net
たしかにあたま大丈夫じゃないリスクはゼロではないが、自動車より安全だ
そして、自動車より安全と発言した人間が狂っていると断言できる者はあまり多くない
932:デフォルトの名無しさん
15/07/10 23:42:39.10 ucCSbhAH.net
>> 919
Rが具体的な型で、Aがなんでもいい型、って言いたいわけだね。
(A -> R) はモナドにならないよ。というか、Functor(共変関手)にならない。
代わりにContravariant(反変関手)になる。
newtype Op a b = Op { getOp :: b -> a }
instance Contravariant (Op a) where
contramap f g = Op (getOp g . f)
(以上contravariantパッケージより)
共変関手にならない理由は、このサイトがわかりやすい。
URLリンク(kinokkory.hatenablog.com)
933:デフォルトの名無しさん
15/07/11 09:25:20.24 6sFnysGr.net
>>921
ありがと。
M(A)がモナドになる条件を簡単に言えるのかな?
934:デフォルトの名無しさん
15/07/11 09:30:00.73 S9PAD2xf.net
Emacs使いはflycheckが便利そう
URLリンク(github.com)
既出ならスマソ
935:デフォルトの名無しさん
15/07/11 09:42:11.42 Yc/lws0v.net
Cloud Haskellというものを知ったのですが
こういったノード間通信ライブラリを使ってる方がいたら
バリエーションや感触を教えてもらえないでしょうか
もしくはベタに書いたほうがいいでしょうか
936:デフォルトの名無しさん
15/07/11 11:24:25.49 aYDDmLdu.net
単体のライブラリの質は人気に比例する気がする
でもフレームワークや統合環境は質より量でごまかせるから人気はどうでもいい
937:922
15/07/11 13:00:32.09 6sFnysGr.net
>>921
教えてもらったサイトの「正の位置・負の位置」で解決しました
938:デフォルトの名無しさん
15/07/11 15:05:57.90 8xsgKabx.net
岡部健の新作が来たゾ~
939:デフォルトの名無しさん
15/07/11 15:12:01.82 V/wpM/3h.net
あの人はなんでブログの記事まで作って個人に対して反論してるんだろうね
反論記事って言い合いを面白がってみてる人以外には何の得もない気がするんだけどなあ
940:デフォルトの名無しさん
15/07/11 16:20:10.41 obYDcaZK.net
Haskellは仕事で使える?
使えるとどうなる?教えて
941:デフォルトの名無しさん
15/07/11 16:44:05.06 aYDDmLdu.net
もし仕事で使えると、無料で色々教えるのが勿体無くなる
942:デフォルトの名無しさん
15/07/11 16:46:52.16 obYDcaZK.net
どういう時に使う?教えて詳しく
943:デフォルトの名無しさん
15/07/11 20:42:56.70 /RrsVJlS.net
そりゃ自分のタスクを自動化するのに使うんだろと
944:デフォルトの名無しさん
15/07/11 22:25:31.98 6sFnysGr.net
>>921
やっぱり自分はアホだった。全然分かっていなかった。
ファンクターにはなるがモナドにはならないものがあるはずだが、
その例が作れん
945:デフォルトの名無しさん
15/07/12 00:46:11.12 KOjB2nQF.net
x^n+y^m=z^r 解は存在するか.だれも解けないといわれたビール予想
解けた方だけどうぞ
URLリンク(blog.livedoor.jp)
946:デフォルトの名無しさん
15/07/12 0
947:z0K.net
948:デフォルトの名無しさん
15/07/12 06:13:49.33 /rMkRh/q.net
Haskell処理系のGCよく知らないけど、moving GCでも良いし
破壊的代入がなければwrite barrierもいらないから
Haskellのほうが簡単というだけじゃなくて?>ガベコレ
Javaは旧SunやIBMががんばった結果、細かい最適化はされてるだろうけど。
949:デフォルトの名無しさん
15/07/12 08:26:42.75 zJqA9jr9.net
科学的根拠もなくただショボいという意見は参考にならない
もうJavaは無視してC++のようにGCショボいけど速いやつを参考にしよう
950:デフォルトの名無しさん
15/07/12 11:00:37.13 AGKmbBWc.net
C++はGCショボいというよりない。。
ということでrustやろうぜ!
951:デフォルトの名無しさん
15/07/12 11:10:50.31 s7w6GHZY.net
RustもGCないじゃん
952:デフォルトの名無しさん
15/07/12 11:44:20.38 fsP2XOSV.net
>>939
RCあるぞ。
953:デフォルトの名無しさん
15/07/12 12:48:25.98 KGquBeD3.net
Haskellでどんな作業を効率化できますか?
一例を教えて下さい
954:デフォルトの名無しさん
15/07/12 12:52:34.01 fsP2XOSV.net
型のついた構文木の操作
955:デフォルトの名無しさん
15/07/12 13:07:29.47 KGquBeD3.net
お前らがこんなことやってるより
ストリーミングサイト作ったCavetube管理人のほうがすごいんだよなぁ
956:デフォルトの名無しさん
15/07/12 13:26:20.29 kel+atw2.net
誰々より誰々が凄いとかどーでもいいじゃん。
そんなの気にするより、そいつらのソース参考にするとかして
Haskell を楽しんだ方が何倍も有意義だよ。
957:デフォルトの名無しさん
15/07/12 13:33:21.56 rAeLMId1.net
>>938
GCサポートは付いてるけどな。
RAIIで設計するとGCは遅くなるだけであまり意味ないから誰も使わないな。
958:デフォルトの名無しさん
15/07/12 15:30:30.95 ryFHmMNk.net
Cavetubeってなんですか
959:デフォルトの名無しさん
15/07/12 20:10:37.89 abu6RaU0.net
宣伝だろ
960:デフォルトの名無しさん
15/07/12 20:16:28.54 bkprvq+c.net
Darcsはなぜgitに敗れたのか
961:デフォルトの名無しさん
15/07/12 21:16:22.96 uwDfGRH4.net
HaskellはC言語で作ったライブラリをラップしてばかりだから、そもそもC言語製品に勝てるはずがなかった
962:デフォルトの名無しさん
15/07/12 21:17:29.74 fsP2XOSV.net
それは普通に正しい使い方なんだが。
最初からCと競合するような言語じゃない。
963:デフォルトの名無しさん
15/07/12 22:05:39.58 zJqA9jr9.net
Cと競合しないならバイトコードインタプリタで十分
コンパイラのゴリ押しが良くない
964:デフォルトの名無しさん
15/07/12 22:06:55.79 x1Gu8TTq.net
既存の大量にあるCライブラリを利用しやすいかは大事なポイント
965:デフォルトの名無しさん
15/07/12 22:18:58.68 fsP2XOSV.net
>>951
>Cと競合しないならバイトコードインタプリタで十分
>コンパイラのゴリ押しが良くない
意味がわからん。
LLVMコードを出力するのとコンパイラとの境界ってなによ
966:デフォルトの名無しさん
15/07/12 22:24:58.59 s7w6GHZY.net
>>940
RCをGCというならC++にもGCあるだろ
967:デフォルトの名無しさん
15/07/12 22:42:25.31 bkprvq+c.net
JavaとかCは、明らかに駄目な応用先でも上の意向等で使わざる得ないことあるけどHaskell とかlispはそういうこと滅多にないでしょ
968:デフォルトの名無しさん
15/07/12 22:43:02.61 fsP2XOSV.net
>>954
その理解で何の問題もないと思うが。
RCがGCの主要実装方法のひとつだという点まで争いたいの?
969:デフォルトの名無しさん
15/07/12 22:47:38.71 7yEOwALs.net
明確な目的や条件を設定せずに
やたら言語の優劣をつけたがる奴は
まともな開発経験も知識も能力もない
アホだと断定していいだろ。
970:デフォルトの名無しさん
15/07/12 23:08:59.10 bkprvq+c.net
JavaやCとHaskell の単純な比較はできない
971:デフォルトの名無しさん
15/07/12 23:48:11.69 s7w6GHZY.net
>>956
>>938 がC++はGCないからRustやろうぜとか言ってたんですよ
972:デフォルトの名無しさん
15/07/12 23:48:45.86 zJqA9jr9.net
>>953
バイトコードを外部に出力する機能があったら仕様変更の影響が外部に伝播するから
その機能が無くても十分なら無い方が良いってこと
973:デフォルトの名無しさん
15/07/12 23:53:56.51 fsP2XOSV.net
>>959
なるほど。
Rustのリージョナルポインタによるメモリ管理を
GCと間違えたんだろうな。
974:デフォルトの名無しさん
15/07/13 00:22:31.58 FwNm1COs.net
Java ビジネス
C 組み込み
こういう風になっています。
富豪プログラミングが出来る所でCを使う必要性はあまり無い。
975:デフォルトの名無しさん
15/07/13 00:58:02.40 QeuWC4Dg.net
>>961
いやrustにGCがないのは知ってる
976:デフォルトの名無しさん
15/07/13 02:59:06.50 6i7dJOia.net
Rustなんて放り投げてATSやろうぜ!
977:デフォルトの名無しさん
15/07/13 07:50:41.60 Ml9NNXKo.net
>>963
だからRCあるだろうが!
978:デフォルトの名無しさん
15/07/13 08:16:40.56 5ZThykAi.net
毛はキータで相変わらず行間が読めないから、
RSSじゃなくて毛自身がコメ書いてる事を自分でバラす事になるんだな(笑)
979:デフォルトの名無しさん
15/07/13 10:09:26.25 gqfr1aBw.net
Haskell流行って長いけどなんか実用になるような成果でた?
980:デフォルトの名無しさん
15/07/13 10:57:00.94 cCxFevQ1.net
型のついてない成果を型のついた成果に翻訳できる
右から左に流すだけの虚業のように見えるのは仕方ない
981:デフォルトの名無しさん
15/07/13 11:18:47.64 Ml9NNXKo.net
普段から業務に使ってる人間からすると意味不明な問いだ。
982:デフォルトの名無しさん
15/07/13 11:35:14.43 UsYUluT9.net
「プログラム」の何たるかを
丸っきり分かってない一部のバカにとっては、
「一般ユーザが利用可能なパッケージソフト」だけが
「実用的な成果物」なんだろ。
983:デフォルトの名無しさん
15/07/13 12:24:32.84 O7974LG1.net
Haskell がパッケージソフトの作成に向いていないのは何故?
984:デフォルトの名無しさん
15/07/13 13:38:57.82 tAtIl5MT.net
Javaなんて何のメリットもないのに使わざる得ない時があるのが謎
985:デフォルトの名無しさん
15/07/13 13:40:49.84 cCxFevQ1.net
exeの作成は問題ないがdllの作成に向いているのはCしかない
C++でさえdllの作成に向いていない
986:デフォルトの名無しさん
15/07/13 15:07:15.86 6ctAAsGS.net
エンタープライズ系のアプリケーションでは最適解のひとつだから
仕方がない。
>>962 のとおり。
987:デフォルトの名無しさん
15/07/13 18:30:29.23 htwOfG4r.net
C は実用というよりは、もう教養の部類だからね‥
C がわからないようでは、そいつの言うことは信用できない
URLリンク(builder.japan.zdnet.com)
988:デフォルトの名無しさん
15/07/13 19:05:07.18 xmoiVj3U.net
>>538
特定言語を知らん事を根拠にした
レッテリングにはあんまり賛同できないな。
989:デフォルトの名無しさん
15/07/13 19:27:16.94 9wI4712X.net
windows7でhaskellplatform使ってるんですが、
Data.HashTableが入ってないようなので
cabal install hashtablesして、成功したのですが
未だにimport Data.HashTableで失敗します。
何がいけないのでしょうか?
990:デフォルトの名無しさん
15/07/13 19:50:15.17 Ml9NNXKo.net
>>977
>Data.HashTable
Data.HashTableならbaseパッケージに入ってるんで、
hashtables要らないよ。
hashtables使うならData.HashTable.ST.Basicとか
Data.HashTable.ST.Cuckooをimportしないと。
多分どこかでなんか勘違いしてると思う。
991:デフォルトの名無しさん
15/07/13 19:56:02.53 Ml9NNXKo.net
って、base-4.8からData.Hashtableなくなったのか~
hashtables入れて import Data.HashTabl.IO でいいんじゃないかな。
992:デフォルトの名無しさん
15/07/13 20:11:29.72 Ml9NNXKo.net
いちおうミニマルなサンプル
{-# LANGUAGE ScopedTypeVariables #-}
module Main where
import Data.HashTable.IO as H
type HashTable k v = H.CuckooHashTable k v
main = do
(h::HashTable Int String) <- fromList [(1,"tata"),(2,"titi"),(3,"toto")]
insert h 4 "tete"
l <- toList h
print l
993:デフォルトの名無しさん
15/07/13 21:15:03.79 6helnrAX.net
ありがとうございます!
動作確認まだ出来てませんが、何とか先に進めそうです!
994:デフォルトの名無しさん
15/07/14 14:33:35.00 d1S9qbgP.net
reduce関数やrange関数やmap関数は、命令型のループでしか書けないことをわかってな奴が居るな。
ノイマン型コンピュータというハードウェアは究極的には命令型でしか動作しない。
関数型の機械語なんて存在しない。
ここ、重要ね。反論はないと思うけど
995:デフォルトの名無しさん
15/07/14 14:35:07.84 Bu3+R9wf.net
>>982
だからなに?
996:デフォルトの名無しさん
15/07/14 15:11:21.95 GNUjvMWE.net
言ってみたかっただけ
997:デフォルトの名無しさん
15/07/14 15:22:11.58 RRB/2bWF.net
>>982
関数型プログラマならBackusのCan programming be liberated from the von Neumann style?くらい読んでるわよ!
バカにしないでくれる!?
998:デフォルトの名無しさん
15/07/14 15:26:34.91 lfdsryMV.net
極限まで高めた並列性が最高性能を引き出す・・・Haskellで書かれたプログラミンは・・神!
一万を超えるメニーコアが・・・Haskellは・・・神!
などと宣伝しすぎたから言われるんじゃないの。
結局速くなってないし。
999:デフォルトの名無しさん
15/07/14 15:57:28.35 krmtTpmZ.net
宣伝には金がかかる
その金を汚いと思うかどうかは自由だが少なくとも金をかけてないやつは潔白だろ
関係ないやつを巻き込むなよ
1000:デフォルトの名無しさん
15/07/14 16:16:14.81 lfdsryMV.net
速くなってない・・・騙された・・・Haskell死ね!
と思う人がいても不思議じゃないだろ。
宣伝しすぎたんだよ。
1001:デフォルトの名無しさん
15/07/14 16:18:10.13 Bu3+R9wf.net
そんなに宣伝されてたの?
1002:デフォルトの名無しさん
15/07/14 16:44:47.28 lfdsryMV.net
そうだねえ。
チラシお断りと貼ってあるのに、ドンドン入れていく感じだね。
Haskellの宣伝がひどいので、コメント欄を無くしたブログも多かったんだよ。
そこまで宣伝したのに、宣伝されたことが全然実現されていないからね。
宣伝では5億並列で一ナノ秒以下を実現とか平気で言ってたからね。
もともと無理だったんだよ。
1003:デフォルトの名無しさん
15/07/14 17:50:31.44 Bu3+R9wf.net
>>990
どこの世界のお話ですか? 君の中の平行世界?
1004:デフォルトの名無しさん
15/07/14 18:47:54.12 JhU5Z9W0.net
>>982
>reduce関数やrange関数やmap関数は、命令型のループでしか書けないことをわかってな奴が居るな。
>ノイマン型コンピュータというハードウェアは究極的には命令型でしか動作しない。
>関数型の機械語なんて存在しない。
>ここ、重要ね。反論はないと思うけど
データフローマシンのような非ノイマン型アーキテクチャとか長年試作されてきたし
最近もReduceronはじめFPGAでグラフ書換プロセッサが実装されてるわけだが、
なにを根拠に「存在しない」とか言ってるのこのひとは?
1005:デフォルトの名無しさん
15/07/14 19:33:26.76 X8vX3uS6.net
次スレ
スレリンク(tech板)
1006:デフォルトの名無しさん
15/07/14 19:48:07.17 V8pOZFXs.net
次スレは当スレの約17時間後に立った下記重複スレを、実質Part29として活用しましょう。
当スレのレス数が1000になるまでは当スレを、それ以後は下記スレをご利用ください。
>>993のスレは(残っていれば)実質Part30として使います。
(実質Part29)
関数型プログラミング言語Haskell Part28 [転載禁止](c)2ch.net
スレリンク(tech板)
1007:デフォルトの名無しさん
15/07/14 20:33:29.57 9t3W2eIV.net
HaskellとErlangの並列性能のベンチマークあったけどボロ負けでしたよ
URLリンク(github.com)
1008:デフォルトの名無しさん
15/07/15 00:18:57.00 jeRkgPlX.net
趣味でしか触ってなくて、python をやってから haskell に来たのでそれはもう僕からしたら haskell は素敵に速いのです
1009:デフォルトの名無しさん
15/07/15 00:51:31.43 HWtOn7Kk.net
オブジェクト指向
アクターモデル
インターネット
圏論
集合論
非ノイマン型はどれですか?
全部ですか?
1010:デフォルトの名無しさん
15/07/15 01:10:17.43 x7KlsBjr.net
>>997
そもそもそれらのどこにコンピュータ・アーキテクチャが
含まれているのか教えてくれ。
1011:デフォルトの名無しさん
15/07/15 04:12:42.40 WlnCwIoX.net
いまだ役たたず
1012:デフォルトの名無しさん
15/07/15 04:18:56.45 meQVGR7r.net
>>1000
1013:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
1014:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています