>>678
にゃんと!?
それを押してもいざ実装してみたら
構造体で配列を包む場合、あらかじめ配列の長さを決めないといけなかった。
struct {
int array[1024];
int size;
}typedef Array;
この1024とかも余分な分は最適化で無くなるっていうなら10万位要素があっても大丈夫なように1GB位(見かけ上)確保したいが、そうでないなら大体の場合、無駄な領域を確保してることになる。
探検
関数型プログラミング言語Haskell Part34
682デフォルトの名無しさん
2025/10/09(木) 18:19:20.69ID:j1OYGPg+683デフォルトの名無しさん
2025/10/09(木) 18:28:04.54ID:j1OYGPg+ >>678
ん、まてよ?
最適化で不要なコピーは消えるって言っても、関数プログラミングのmap関数と同じ動きなら、参照元の値は変わったらダメなので参照渡しされたら困るんだが、どんな最適化でコピー(値渡し)で無く、かつ参照渡しでもない状態ってどんな状態?
ん、まてよ?
最適化で不要なコピーは消えるって言っても、関数プログラミングのmap関数と同じ動きなら、参照元の値は変わったらダメなので参照渡しされたら困るんだが、どんな最適化でコピー(値渡し)で無く、かつ参照渡しでもない状態ってどんな状態?
684デフォルトの名無しさん
2025/10/09(木) 19:31:35.47ID:XykzCJ/G Haskellは遅延評価だからmapが配列を返してると言えるかあやしい
一般的な関数型言語だと末尾再帰で不必要になる値を再利用(上書き)する
あと値が変更されない(immutable)なら参照渡しで共有しても問題ないし
共有するためにimmutableにすると言っても過言ではない
一般的な関数型言語だと末尾再帰で不必要になる値を再利用(上書き)する
あと値が変更されない(immutable)なら参照渡しで共有しても問題ないし
共有するためにimmutableにすると言っても過言ではない
685デフォルトの名無しさん
2025/10/09(木) 19:50:16.02ID: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]だけ。
(むしろ共有してないからこそ「富豪プログラミング」とか言われる)
うん、遅延評価だから基本参照を返してるはず。バード本参照
(なので>>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]だけ。
(むしろ共有してないからこそ「富豪プログラミング」とか言われる)
686デフォルトの名無しさん
2025/10/09(木) 20:01:16.79ID:j1OYGPg+ 言ってみればHaskellは新しい参照をどんどん生み出して、不要になった参照はガンガンGCする。
Cはそういうプログラミングには(当たり前だが)向かないし、当たり前にCの方が効率は良い。
人間が書くコードはHaskellみたく数学に近いほど短くなる。
どっちが良いとかじゃなく、何を優先するかという話。
(なのだなぁと、Cでmap関数もどきを書いて再確認した)
Cはそういうプログラミングには(当たり前だが)向かないし、当たり前にCの方が効率は良い。
人間が書くコードはHaskellみたく数学に近いほど短くなる。
どっちが良いとかじゃなく、何を優先するかという話。
(なのだなぁと、Cでmap関数もどきを書いて再確認した)
687デフォルトの名無しさん
2025/10/09(木) 20:33:26.39ID:N3YUsGEr ループ書こうぜ
688デフォルトの名無しさん
2025/10/09(木) 21:58:50.95ID:HS++2zZ0689デフォルトの名無しさん
2025/10/10(金) 05:32:34.82ID:WzZmvOuY Haskellを勉強したけど何に使えばいいのか分からない
関数型プログラミングで難しい割に、速度が出ないことがわかっているやっぱり速度は正義だろ
関数型プログラミングで難しい割に、速度が出ないことがわかっているやっぱり速度は正義だろ
690デフォルトの名無しさん
2025/10/10(金) 07:17:31.85ID:G/tXieG5 >>688
ジェネリックはそのうちC++なりJavaなりで試すけど、まだ試してもいないので…。
最適化の方はもうちょい具体的に教えて欲しいかも。
x = 2 * 100を x = 200にするみたいなのは知ってるけど、あんま詳しくない。
ジェネリックはそのうちC++なりJavaなりで試すけど、まだ試してもいないので…。
最適化の方はもうちょい具体的に教えて欲しいかも。
x = 2 * 100を x = 200にするみたいなのは知ってるけど、あんま詳しくない。
691デフォルトの名無しさん
2025/10/10(金) 07:21:42.77ID:G/tXieG5 >>689
今のHaskellは(中の人がMSに勤め始めてから)C#並みに速くなってるけど、GUIライブラリとか軒並み遅い時代に開発が止まってる…。
しいて言えばYesod使ってWebアプリかな?
Mac(Appleシリコン)版があるからiOSアプリのロジック部分とかも行けそう。
今のHaskellは(中の人がMSに勤め始めてから)C#並みに速くなってるけど、GUIライブラリとか軒並み遅い時代に開発が止まってる…。
しいて言えばYesod使ってWebアプリかな?
Mac(Appleシリコン)版があるからiOSアプリのロジック部分とかも行けそう。
692デフォルトの名無しさん
2025/10/10(金) 20:26:02.07ID:OD0KmsJp693デフォルトの名無しさん
2025/10/11(土) 22:42:46.58ID:pZv0dAV3 22 template <typename T>
23 vector<T> map(function<T(T)> f, const vector<T> arr){
24 vector<T> temp;
25 for(auto i : arr) temp.push_back(f(i));
26 return temp;
27 }
23 vector<T> map(function<T(T)> f, const vector<T> arr){
24 vector<T> temp;
25 for(auto i : arr) temp.push_back(f(i));
26 return temp;
27 }
694デフォルトの名無しさん
2025/10/11(土) 22:43:04.64ID:pZv0dAV3 C++で書いてみた。
今回は値渡しにしたけど、本当に最適化でコピーにならないようにできるのかな…。
そもそもどうやってそれを確認するんだろう?
本当なら参照渡しがほぼ要らなくなるけど。
そして、例によって参照渡しだと>>668やコードこそ書いてないがCで一般的な>>677のカッコ内に書いた(通常、それを避けるために結果を格納するためのポインタを引数で渡す)になる。
コードにするとこう。
(Haskellerなのでmapにしたけど、C++だとmapって連想配列なのね。失敗した…)
void map(vector<int>* input, vector<int>* output);
配列と比べて長さを引数に渡さないで良くなるのと、realocしなくても長さを変更できる点が進化しているが。
今回は値渡しにしたけど、本当に最適化でコピーにならないようにできるのかな…。
そもそもどうやってそれを確認するんだろう?
本当なら参照渡しがほぼ要らなくなるけど。
そして、例によって参照渡しだと>>668やコードこそ書いてないがCで一般的な>>677のカッコ内に書いた(通常、それを避けるために結果を格納するためのポインタを引数で渡す)になる。
コードにするとこう。
(Haskellerなのでmapにしたけど、C++だとmapって連想配列なのね。失敗した…)
void map(vector<int>* input, vector<int>* output);
配列と比べて長さを引数に渡さないで良くなるのと、realocしなくても長さを変更できる点が進化しているが。
レスを投稿する
ニュース
- 【速報】中国、高市氏答弁撤回求め国連に2度目書簡 [蚤の市★]
- 外国人の労働力「反対」59%…読売・早大共同世論調査 [蚤の市★]
- 日テレ社長 国分太一に「答え合わせするまでもない」 聴取時の内容そのものが「コンプライアンス違反」 [Ailuropoda melanoleuca★]
- 都心の2億円タワマンに住むのは…30代の中国人 「そこそこの富裕層」が日本へ「脱出」してきている [蚤の市★]
- 【少子化】少子化は女のせい?男のせい?SNSで不毛すぎる議論が勃発…「産ませる発言」vs「淘汰される遺伝子」泥沼バトルへ ★4 [ぐれ★]
- 【インフルエンザワクチン】インフル猛威のなかSNSで根拠なきデマ「接種で異臭」「感染リスク増」接種にためらいも [ぐれ★]
- 【悲報】ユニクロのダウンジャケット、高機能低価格で全てのアパレルブランドを破壊してしまうwwwwwwwwwwwwwwwwwwww [802034645]
- アメリカ国防長官「皆殺しにしろ!」沈没しかかっている船の生存者に再度の攻撃命令 戦争犯罪の可能性大 高市早苗…… [175344491]
- 「私は『一つの中国』を支持します」と表明した日本人アーティスト、中国での大規模公演も全く支障なく完全成功→ネトウヨ「裏切り者!」 [314039747]
- 【朗報】ほぼ童貞と結婚した女性さん、愛のある優しいセックスに感動する・・・・・・・ [839150984]
- 近現代日本でもっともまともな総理大臣、誰を思い浮かべた? [377482965]
- 嫌儲流行語大賞「いいべ」に決まる [163661708]
