公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
公式ドキュメント
https://www.rust-lang.org/learn
Web上の実行環境
https://play.rust-lang.org
※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/
※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust
※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/
※次スレは原則>>980が立てること
前スレ
Rust part25
https://mevius.5ch.net/test/read.cgi/tech/1722354386/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
探検
Rust part26
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2024/09/20(金) 22:18:38.38ID:c48cFuZJ312デフォルトの名無しさん
2024/10/16(水) 20:08:26.05ID:IdjFDmt0 >>295
ライフタイム導入でスタックフレーム上への参照と変数が管理するヒープへの参照を区別せず安全に扱えるようになっただけで意識するしないは別問題じゃないかな
そのためコストの高いヒープを回避できる機会が増えて高速化に寄与しているのは間違いないけど
ライフタイム導入でスタックフレーム上への参照と変数が管理するヒープへの参照を区別せず安全に扱えるようになっただけで意識するしないは別問題じゃないかな
そのためコストの高いヒープを回避できる機会が増えて高速化に寄与しているのは間違いないけど
313デフォルトの名無しさん
2024/10/16(水) 20:11:56.13ID:IdjFDmt0 >>306
今はパイプラインとキャッシュによりほとんどの利用ケースでリンクリストよりベクタが速くなってしまったね
元々メモリ使用量や多段間接参照になる点でリンクリストが不利だった点に加えて追い打ちをかけるように
今はパイプラインとキャッシュによりほとんどの利用ケースでリンクリストよりベクタが速くなってしまったね
元々メモリ使用量や多段間接参照になる点でリンクリストが不利だった点に加えて追い打ちをかけるように
314デフォルトの名無しさん
2024/10/16(水) 20:13:18.48ID:IdjFDmt0 >>310
Lispは言語としてcond, car, cdrがあるからリンクリスト言語だけどC言語は明確に違うね
Cはリンクリストもベクタもその他のデータ構造も実装できるというだけの平等な立ち位置かな
Lispは言語としてcond, car, cdrがあるからリンクリスト言語だけどC言語は明確に違うね
Cはリンクリストもベクタもその他のデータ構造も実装できるというだけの平等な立ち位置かな
315デフォルトの名無しさん
2024/10/16(水) 20:21:57.12ID:jR87Fk4R316デフォルトの名無しさん
2024/10/16(水) 20:27:30.93ID:RoKRQLvT リンクリストは不変コレクションだから、副作用にこだわる関数型言語では特別な地位がある
ちなみにScalaではVectorという名前のもう一つの不変コレクションが多用されているんだが
これのRust版あるのかな? 中身は1ノード32要素のトライ木
ちなみにScalaではVectorという名前のもう一つの不変コレクションが多用されているんだが
これのRust版あるのかな? 中身は1ノード32要素のトライ木
317デフォルトの名無しさん
2024/10/16(水) 20:48:00.68ID:jDyVYSBS ゆーてClojureとかHylangとか今ドキLisp女子はlist processingナニソレって感じのやつばっかやん
318デフォルトの名無しさん
2024/10/16(水) 21:41:36.61ID:NMNSAXL7 やっぱりこのスレ関数型言語わかる人多いの?
C/C++系から入った自分としてはサッパリわからん
C/C++系から入った自分としてはサッパリわからん
319デフォルトの名無しさん
2024/10/16(水) 22:33:14.93ID:9ExG49iw >>318
パラダイムは実際にはグラデーション的で、要素が混ざり合ってる。
明瞭に線を引いて分類できるわけではない。
ML 系とか LISP 系とかは関数型みたいに言われることは多いんだが実際には関数型要素が強めのマルチパラダイムって感じで、 C++ を使いこなせる人なら入門書をちゃんと読めば使えるくらいの難易度。
誰もが文句なく関数型に分類するメジャーな汎用プログラミング言語は Haskell くらいだと思う。
パラダイムは脇に置くとして、 ML 系はインデントで構造を表す文法だったり LISP 系は丸括弧ばかりで構造を表すという外観の違いの段階で忌避感を持っちゃう人は結構いるかも?
パラダイムは実際にはグラデーション的で、要素が混ざり合ってる。
明瞭に線を引いて分類できるわけではない。
ML 系とか LISP 系とかは関数型みたいに言われることは多いんだが実際には関数型要素が強めのマルチパラダイムって感じで、 C++ を使いこなせる人なら入門書をちゃんと読めば使えるくらいの難易度。
誰もが文句なく関数型に分類するメジャーな汎用プログラミング言語は Haskell くらいだと思う。
パラダイムは脇に置くとして、 ML 系はインデントで構造を表す文法だったり LISP 系は丸括弧ばかりで構造を表すという外観の違いの段階で忌避感を持っちゃう人は結構いるかも?
320デフォルトの名無しさん
2024/10/16(水) 23:59:33.67ID:NMNSAXL7 Rustで使うもの (式指向という考え方, match式, 代数的データ型, リストやOptionへのmap, filterなどの操作等) は理解できてるし、良いなと思って使えてる
それでも Lisp や Haskell は難しいという印象があるんだよね
指摘の通り見た目の見慣れなさで抵抗感があるだけなのかもしれない
それでも Lisp や Haskell は難しいという印象があるんだよね
指摘の通り見た目の見慣れなさで抵抗感があるだけなのかもしれない
321デフォルトの名無しさん
2024/10/17(木) 00:17:27.82ID:CZAZeUbm > ML 系はインデントで構造を表す文法
Haskell や F# が人気なのは分かるけど、OCaml や Standard ML を差し置いて勝手に ML 系の代表ヅラしないでくれますかね……
Haskell や F# が人気なのは分かるけど、OCaml や Standard ML を差し置いて勝手に ML 系の代表ヅラしないでくれますかね……
322デフォルトの名無しさん
2024/10/17(木) 00:25:33.00ID:NeG4778y 元々は研究用の言語でコンパイラ開発とか特定の用途以外だと実用性低いし
ほとんど趣味の領域だから無理に手を出さなくていいよ
Haskellの知識があるとRustのtraitとか?演算子(Result戻し)に馴染みやすくなるけど
そのためにHaskellを勉強するほどではない
ほとんど趣味の領域だから無理に手を出さなくていいよ
Haskellの知識があるとRustのtraitとか?演算子(Result戻し)に馴染みやすくなるけど
そのためにHaskellを勉強するほどではない
323デフォルトの名無しさん
2024/10/17(木) 00:26:57.93ID:SxNRrx7E >>321
Hakell は ML 系ではない扱いだろ。
Hakell は ML 系ではない扱いだろ。
324デフォルトの名無しさん
2024/10/17(木) 00:55:24.22ID:yABRuexK >>319
関数型の定義は何?
関数型の定義は何?
325デフォルトの名無しさん
2024/10/17(木) 01:12:31.87ID:WrCN832N326デフォルトの名無しさん
2024/10/17(木) 01:44:33.23ID:WrCN832N >>299
関数型プログラミングが提唱される前の言語だから、関数合成とか考慮されてないからとか?
Lispは歴史的にLisp以外に関数型言語が無い時代があるので、手続き型言語をお手本にコードが書かれてloop使いまくりの手続き型言語っぽいLispコードが多かったとは聞いている。
関数型プログラミングが提唱される前の言語だから、関数合成とか考慮されてないからとか?
Lispは歴史的にLisp以外に関数型言語が無い時代があるので、手続き型言語をお手本にコードが書かれてloop使いまくりの手続き型言語っぽいLispコードが多かったとは聞いている。
327デフォルトの名無しさん
2024/10/17(木) 01:57:40.19ID:WrCN832N >>318
多分、変数がイミュータブル(不変)だと何がありがたいのかは何かしら関数型言語触らないと分からないと思う。
なので、Rustに飛びつく人は(全員ではないにしろ)関数型言語を触ったことがある人が多いとは思う。
多分、変数がイミュータブル(不変)だと何がありがたいのかは何かしら関数型言語触らないと分からないと思う。
なので、Rustに飛びつく人は(全員ではないにしろ)関数型言語を触ったことがある人が多いとは思う。
328デフォルトの名無しさん
2024/10/17(木) 03:22:22.09ID:FXzuQNl3 rustは関数型言語の特徴を一通り搭載しつつ、あえて数学用語はあまり使わない所が良い。関数型というとプログラム作らずに圏論の話に明け暮れる人が多すぎ。
rustはプログラムを書くために実用的な機能にまとめましたって感じでいい。
rustはプログラムを書くために実用的な機能にまとめましたって感じでいい。
329デフォルトの名無しさん
2024/10/17(木) 03:29:08.36ID:FXzuQNl3 lispが読めないって人はテキストエディタでカッコを全部スペースに置換してしまえばいい。
そしたらインデントだけ見えるようになる。
カッコを見ないのが正解。
自分はカッコの表示on/off機能をエディタに入れてる。
そしたらインデントだけ見えるようになる。
カッコを見ないのが正解。
自分はカッコの表示on/off機能をエディタに入れてる。
330デフォルトの名無しさん
2024/10/17(木) 06:58:43.79ID:yABRuexK 関数型言語とは何かを定義せず雰囲気てわ分類するなよ
よくそんなオツムでプログラミングやってんな
よくそんなオツムでプログラミングやってんな
331デフォルトの名無しさん
2024/10/17(木) 07:48:34.04ID:ETsUhebR ユーザー視点なら、単なる「関数型言語」というラベルくらいでいいんじゃない?
バズワードみたいなもの。
そもそも「関数」「計算可能関数 」を理解しているやつはどれくらいいるんかしらん。
バズワードみたいなもの。
そもそも「関数」「計算可能関数 」を理解しているやつはどれくらいいるんかしらん。
332デフォルトの名無しさん
2024/10/17(木) 08:51:31.65ID:SxNRrx7E >>324
関数の入出力でプログラムを構成するスタイルってくらいのふわっとした定義しかない。
それをサポートする言語機能が多いか少ないかでグラデーションになってる。
クロージャがあれば関数型っぽいし、関数合成があればもっとだし、カリー化があればいかにもぽいぽい。
関数の入出力でプログラムを構成するスタイルってくらいのふわっとした定義しかない。
それをサポートする言語機能が多いか少ないかでグラデーションになってる。
クロージャがあれば関数型っぽいし、関数合成があればもっとだし、カリー化があればいかにもぽいぽい。
333デフォルトの名無しさん
2024/10/17(木) 09:44:28.22ID:Dr9I7rOm >>311
firefoxでも全然使われてないRust
firefoxでも全然使われてないRust
334デフォルトの名無しさん
2024/10/17(木) 12:07:14.38ID:wG5d2OUn 知りもしないことを知ったかぶりして書くやつが多いスレだこと
335デフォルトの名無しさん
2024/10/17(木) 15:01:11.80ID:HAj7NAac きみらRustでVecとかC++でvectorとか使ってんの?
なんでLinkedList使わんの?
なんでLinkedList使わんの?
336デフォルトの名無しさん
2024/10/17(木) 15:05:42.63ID:HAj7NAac337デフォルトの名無しさん
2024/10/17(木) 16:50:02.90ID:hLaeUZg0 >>335
アンロールドリンクドリストならベクターより良いよ
アンロールドリンクドリストならベクターより良いよ
338デフォルトの名無しさん
2024/10/17(木) 20:18:17.74ID:9pxlHN7V >>324
普通はこういう風に説明される
https://web.sfc.keio.ac.jp/~hattori/prog-theory/ja/functional.html
1. プログラムは関数定義の集合であり、関数呼び出しによってそれらを組み合わせる。
2. 関数は first class object である。
3. 文という単位は無く、プログラムの実行とは式を評価することである。
4. 参照透過性がある。
主に、2が便利だから、rustにも部分的に採用されている
普通はこういう風に説明される
https://web.sfc.keio.ac.jp/~hattori/prog-theory/ja/functional.html
1. プログラムは関数定義の集合であり、関数呼び出しによってそれらを組み合わせる。
2. 関数は first class object である。
3. 文という単位は無く、プログラムの実行とは式を評価することである。
4. 参照透過性がある。
主に、2が便利だから、rustにも部分的に採用されている
339デフォルトの名無しさん
2024/10/17(木) 20:46:18.51ID:yABRuexK340デフォルトの名無しさん
2024/10/17(木) 21:11:20.46ID:9pxlHN7V341デフォルトの名無しさん
2024/10/17(木) 21:25:15.67ID:zXjn5afM >>338
ウケるw
ウケるw
342デフォルトの名無しさん
2024/10/17(木) 21:25:56.56ID:zXjn5afM >>339
さらにウケるw
さらにウケるw
343デフォルトの名無しさん
2024/10/17(木) 21:46:24.33ID:WrCN832N >>328
Haskellerの一部しか圏論言ってないと思うけど…。
(確かに声は大きいが)
モナドで躓く人や、モナドの理解がまだ浅い人は圏論言わないし、OCamlやF#、SMLな人も圏論言わない。
(そして、モナドを深く理解した人でも全員が圏論言うわけではない)
Lisp系の人は言わずもがな。
関数型言語を使ってる人の中でも圏論言う人はごく少数。
(繰り返すが、一部の人の声が大きいのは認める)
Haskellerの一部しか圏論言ってないと思うけど…。
(確かに声は大きいが)
モナドで躓く人や、モナドの理解がまだ浅い人は圏論言わないし、OCamlやF#、SMLな人も圏論言わない。
(そして、モナドを深く理解した人でも全員が圏論言うわけではない)
Lisp系の人は言わずもがな。
関数型言語を使ってる人の中でも圏論言う人はごく少数。
(繰り返すが、一部の人の声が大きいのは認める)
344デフォルトの名無しさん
2024/10/17(木) 21:51:50.24ID:yABRuexK345デフォルトの名無しさん
2024/10/17(木) 21:58:01.60ID:WrCN832N >>338
Rustの説明としては弱いかな。
2はJavaもC#も持ってるし。
自分は4に重きを置いた手続き型言語って位置付けだな。
マルチスレッドプログラミングで4が重要。
(ただし、Haskellは遅延評価なので4を生かしきれず、Idris2の様な正格評価版Haskellを生み出した)
あとは、C並みに速いだけだったらOCamlやSMLも同じこと言ってるので、2,4を満たしつつGCが無いのがRustの特徴だと思う。
Rustの説明としては弱いかな。
2はJavaもC#も持ってるし。
自分は4に重きを置いた手続き型言語って位置付けだな。
マルチスレッドプログラミングで4が重要。
(ただし、Haskellは遅延評価なので4を生かしきれず、Idris2の様な正格評価版Haskellを生み出した)
あとは、C並みに速いだけだったらOCamlやSMLも同じこと言ってるので、2,4を満たしつつGCが無いのがRustの特徴だと思う。
346デフォルトの名無しさん
2024/10/17(木) 22:51:01.11ID:C0hMoyx0 言語が生き残るかどうかは
ある程度の広さがある分野においてその言語が必須かどうかで決まる
例えば広まってるOS環境での主開発言語と公式で定められたりウェブブラウザのように特定言語が強いられるような環境における利用必須もあれば
C言語のように速さと省メモリ性で他とは大差の唯一性による必須もある
つまり関数型によるメリットなんて二の次なのだ
C言語と同等の速さと省メモリ性を持ちつつ様々な安全性も保証するRustはCに替わって広い分野での必須言語となりつつある
そのRustがたまたま関数型の特徴を多く兼ね備えて非常に使いやすいというだけにすぎない
ある程度の広さがある分野においてその言語が必須かどうかで決まる
例えば広まってるOS環境での主開発言語と公式で定められたりウェブブラウザのように特定言語が強いられるような環境における利用必須もあれば
C言語のように速さと省メモリ性で他とは大差の唯一性による必須もある
つまり関数型によるメリットなんて二の次なのだ
C言語と同等の速さと省メモリ性を持ちつつ様々な安全性も保証するRustはCに替わって広い分野での必須言語となりつつある
そのRustがたまたま関数型の特徴を多く兼ね備えて非常に使いやすいというだけにすぎない
347デフォルトの名無しさん
2024/10/17(木) 23:33:24.78ID:784LeBrK 突然の演説
348デフォルトの名無しさん
2024/10/18(金) 00:37:38.20ID:eikO6PmP349デフォルトの名無しさん
2024/10/18(金) 03:49:07.30ID:5Kk3482a350デフォルトの名無しさん
2024/10/18(金) 08:02:39.80ID:Zig2xljb えっAPLもっ?
351デフォルトの名無しさん
2024/10/18(金) 08:57:56.68ID:phux1vRq352デフォルトの名無しさん
2024/10/18(金) 09:16:52.85ID:zss9wXA+ いやまあ>>338 の1と2は全然別のことを言ってるだろ
これで説明が足りないと感じる人はFirst class objectの意味を知らないとかか?
これで説明が足りないと感じる人はFirst class objectの意味を知らないとかか?
353デフォルトの名無しさん
2024/10/18(金) 09:31:39.70ID:ady3VKii 関数を組み合わせるってコンビネーターがないと組み合わせられないからね
ファーストクラス関数がないとコンビネーターは無理だからな
ファーストクラス関数がないとコンビネーターは無理だからな
354デフォルトの名無しさん
2024/10/18(金) 09:32:07.67ID:zss9wXA+ 解説したらワンパン終了というが、こう言う時の解説って案外難しいんだよな
相手が「first class object」の意味を知らないのか、「関数」の意味を知らないのか、日本語の文法を知らないのか、それとも文を読む気がないのか、はたまたレスバで勝ちたくて因縁付けてるだけなのか
相手の状態によって適切な解説は異なる。相手の知識をエスパーして解説を始めても意外とフィットしなくてワンパンで終わらない
掲示板でそこまでの手間をかけても、相手がレスバで勝ちたいだけだったら何も得られない。だから馬鹿にして去るのが最適解になってしまう。
相手が「first class object」の意味を知らないのか、「関数」の意味を知らないのか、日本語の文法を知らないのか、それとも文を読む気がないのか、はたまたレスバで勝ちたくて因縁付けてるだけなのか
相手の状態によって適切な解説は異なる。相手の知識をエスパーして解説を始めても意外とフィットしなくてワンパンで終わらない
掲示板でそこまでの手間をかけても、相手がレスバで勝ちたいだけだったら何も得られない。だから馬鹿にして去るのが最適解になってしまう。
355デフォルトの名無しさん
2024/10/18(金) 11:13:30.31ID:wVDH4S6Q >相手の知識をエスパーして解説を始めても意外とフィットしなくて
レスバが目的なら判らないフリしてるだけだからフィットする訳がない
レスバが目的なら判らないフリしてるだけだからフィットする訳がない
356デフォルトの名無しさん
2024/10/18(金) 11:20:18.93ID:/SvZNagR >>348
その文言に騙されたヤツはほんと多いと思う
その文言に騙されたヤツはほんと多いと思う
357デフォルトの名無しさん
2024/10/18(金) 13:34:55.49ID:io02HZIQ >>339
例えばC言語の場合は関数は第一級オブジェクトじゃないけど、それは知ってる?
例えばC言語の場合は関数は第一級オブジェクトじゃないけど、それは知ってる?
358デフォルトの名無しさん
2024/10/18(金) 13:52:02.38ID:xbVzWiEk359デフォルトの名無しさん
2024/10/18(金) 14:00:22.06ID:xbVzWiEk >「1. プログラムは関数定義の集合であり、関数呼び出しによってそれらを組み合わせる。」
関数型言語でも関数定義以外にもモジュールや型や変数の定義があるので
関数定義の集合というと言い過ぎ
厳密な話ではなくプログラムの捉え方のようなざっくりした話であれば
C言語で書いた手続き型的なプログラムでも1は成り立つので
結局何が特徴だと言いたいのかわからない残念な文章
関数型言語でも関数定義以外にもモジュールや型や変数の定義があるので
関数定義の集合というと言い過ぎ
厳密な話ではなくプログラムの捉え方のようなざっくりした話であれば
C言語で書いた手続き型的なプログラムでも1は成り立つので
結局何が特徴だと言いたいのかわからない残念な文章
360デフォルトの名無しさん
2024/10/18(金) 14:26:18.56ID:at3pRl/S パラダイムはプログラムの構成の話なので、 C でオブジェクト指向的なプログラムを書いてもいいし関数指向的に書いてもいい。
言語としてクロージャがなくても構造体と関数の組をクロージャと見做して構成することも出来る。
ただ、なるべく直接的に言語の機能としてサポートがあるに越したことは無いし、常識的には言語が想定している形でプログラムを構成したほうが楽ってだけの話だ。
言語の機能での分類は「だいたいこっち寄り」くらいのことしか言えない曖昧なもんだわ。
言語としてクロージャがなくても構造体と関数の組をクロージャと見做して構成することも出来る。
ただ、なるべく直接的に言語の機能としてサポートがあるに越したことは無いし、常識的には言語が想定している形でプログラムを構成したほうが楽ってだけの話だ。
言語の機能での分類は「だいたいこっち寄り」くらいのことしか言えない曖昧なもんだわ。
361デフォルトの名無しさん
2024/10/18(金) 17:16:35.88ID:0JUhcpKJ >>358
一連のレスで唯一CSの教養を感じるわ
そのとおりであれは定義でもなんでもなく、手続き型言語に関数風味をつけた言語の紹介文でしかない
1,2が当然のように別物といってるやつは計算基礎論履修してないわな
それでも1をエスパーすると関数の集合でなく合成と訂正すればまぁ理解できる
となると関数がビルディングブロックなので2の説明は不要となる
あとファーストクラスオブジェクトってのも怪しい名称だわな
手続き型言語でインラインで関数定義できる程度のことをかっこつけて言ってるだけしか聞こえん
一連のレスで唯一CSの教養を感じるわ
そのとおりであれは定義でもなんでもなく、手続き型言語に関数風味をつけた言語の紹介文でしかない
1,2が当然のように別物といってるやつは計算基礎論履修してないわな
それでも1をエスパーすると関数の集合でなく合成と訂正すればまぁ理解できる
となると関数がビルディングブロックなので2の説明は不要となる
あとファーストクラスオブジェクトってのも怪しい名称だわな
手続き型言語でインラインで関数定義できる程度のことをかっこつけて言ってるだけしか聞こえん
362デフォルトの名無しさん
2024/10/18(金) 17:47:07.37ID:72lp8MJn363デフォルトの名無しさん
2024/10/18(金) 18:29:51.87ID:ady3VKii >1. プログラムは関数定義の集合であり、
>関数呼び出しによってそれらを組み合わせる。
関数定義の集合はプログラムってことだから
例えば{fの定義,gの定義}はプログラムだろ
fの定義が f (x) =fの式 でgの定義が g (x) =gの式とすると
fの引数xにgを入れてを呼び出して f (g) =fの式の中のxをgに置き換えた式 になって
f ( g) =f式の中のxをgに置き換えた式 も関数定義だから
{fの定義、gの定義、fgの定義}もプログラムってことでしょ
3によってプログラムの実行とはfgの式とかを評価することでしょ
>関数呼び出しによってそれらを組み合わせる。
関数定義の集合はプログラムってことだから
例えば{fの定義,gの定義}はプログラムだろ
fの定義が f (x) =fの式 でgの定義が g (x) =gの式とすると
fの引数xにgを入れてを呼び出して f (g) =fの式の中のxをgに置き換えた式 になって
f ( g) =f式の中のxをgに置き換えた式 も関数定義だから
{fの定義、gの定義、fgの定義}もプログラムってことでしょ
3によってプログラムの実行とはfgの式とかを評価することでしょ
364デフォルトの名無しさん
2024/10/18(金) 19:42:44.39ID:v0IxkFYT365デフォルトの名無しさん
2024/10/18(金) 19:55:50.08ID:ndvmbteL 363が全然判ってなくて草
366デフォルトの名無しさん
2024/10/18(金) 21:19:37.07ID:6b0+FHXo367デフォルトの名無しさん
2024/10/18(金) 21:27:21.74ID:Yil/SvXx368デフォルトの名無しさん
2024/10/18(金) 21:33:52.38ID:v0IxkFYT369デフォルトの名無しさん
2024/10/18(金) 22:19:50.60ID:VQpP6XIE >>348
んでも、上で書いた通りOCamlやSMLも誇大広告してたし、さらに言えばJITコンパイラ出した当初のJavaやC#も似たような誇大広告してたんだけどね。
んでも、上で書いた通りOCamlやSMLも誇大広告してたし、さらに言えばJITコンパイラ出した当初のJavaやC#も似たような誇大広告してたんだけどね。
370デフォルトの名無しさん
2024/10/18(金) 22:55:23.05ID:36/T9R8D 「関数型プログラミング」にも「第一級オブジェクト」にも言語の垣根を超えた一般的な定義というものはない
「オブジェクト指向」を自称する言語たちがそれぞれ微妙に異なるオブジェクトを実装しているのとほぼ同じ
「オブジェクト指向」を自称する言語たちがそれぞれ微妙に異なるオブジェクトを実装しているのとほぼ同じ
371デフォルトの名無しさん
2024/10/18(金) 23:00:20.33ID:36/T9R8D てかどうでもいいけどfirst-class objectって英語圏ネイティブからするとどういう印象を受ける言葉なんだろうね
masterとかblacklistなんかとは比べ物にならないレベルで明確にpolitically incorrectな気がするけど
masterとかblacklistなんかとは比べ物にならないレベルで明確にpolitically incorrectな気がするけど
372デフォルトの名無しさん
2024/10/18(金) 23:10:22.32ID:Py1NdU9l >>364
それは流石に関数に対する理解が浅いかと。
関数は要素と像のペアの集合なんだから、定義域と値域は関数に必ず存在する重要な性質だろ。
それを無視するのは関数の本質を無視するようなもの。
「定義域、値域とかいいだしたら論理が循環する」と言うなら、>338 に関連して定義域、値域よりも関数の定義に近い重要な性質って何よ?
それは流石に関数に対する理解が浅いかと。
関数は要素と像のペアの集合なんだから、定義域と値域は関数に必ず存在する重要な性質だろ。
それを無視するのは関数の本質を無視するようなもの。
「定義域、値域とかいいだしたら論理が循環する」と言うなら、>338 に関連して定義域、値域よりも関数の定義に近い重要な性質って何よ?
373デフォルトの名無しさん
2024/10/18(金) 23:28:21.46ID:6b0+FHXo 理解不足かもしれないけど「『副作用の無い、単に写像として表現できる関数』を中心に組み立てる」くらいの認識じゃだめなの?
数学的な意味での定義域はプログラミングでは成り立たない気がする
引数の型がi32なら、その関数には32ビット整数の取り得る値すべてが入るわけだし
ゼロ除算は数学上は定義できないけど、プログラムとしては書けてしまうから「考慮しない」わけにはいかず、エラー処理が必要なわけで
数学的な意味での定義域はプログラミングでは成り立たない気がする
引数の型がi32なら、その関数には32ビット整数の取り得る値すべてが入るわけだし
ゼロ除算は数学上は定義できないけど、プログラムとしては書けてしまうから「考慮しない」わけにはいかず、エラー処理が必要なわけで
374デフォルトの名無しさん
2024/10/18(金) 23:35:59.34ID:cbeCWz4D ガロア体の話?
375デフォルトの名無しさん
2024/10/18(金) 23:56:20.42ID:US/DDn9d モダンな関数型プログラミングのサポートもメモリ安全性も今では必須の前提になっている
そのうえでC言語と同等の速さと省メモリ性を兼ね備えたRustだけが核心部でも使われ生き残るのさ
そのうえでC言語と同等の速さと省メモリ性を兼ね備えたRustだけが核心部でも使われ生き残るのさ
376デフォルトの名無しさん
2024/10/18(金) 23:59:05.04ID:x/LLoMNV377デフォルトの名無しさん
2024/10/18(金) 23:59:21.56ID:6b0+FHXo プログラミングの上ではある程度の割り切りはしてると思う
例えば「入力の文字列を2回繰り返した文字列を返す (例. ABC -> ABCABC) 」関数は、理想的には任意の文字列を渡せるけど、PCのメモリを食い尽くすほど長い文字列を与えたらプログラムが停止するよね
だからといって「この関数は純粋ではない」とは言わなくて、それでも実用上は関数として扱う、といったところはあると思う
例えば「入力の文字列を2回繰り返した文字列を返す (例. ABC -> ABCABC) 」関数は、理想的には任意の文字列を渡せるけど、PCのメモリを食い尽くすほど長い文字列を与えたらプログラムが停止するよね
だからといって「この関数は純粋ではない」とは言わなくて、それでも実用上は関数として扱う、といったところはあると思う
378デフォルトの名無しさん
2024/10/19(土) 01:37:07.63ID:/2TSLe1L >>373
大雑把に言えばそうだけど、Lisp系を関数型言語に含める人と含めない人(MLの系譜の言語だけが関数型言語)で意見が食い違って争いというか、Lisp系含めない人は比較的若い人が多いので、(関数型言語の条件にパターンマッチは必須じゃないなどと)訂正される。
若い人でも情報系の学校でLispを関数型言語って習うと思うが、世間一般に普及してるとは言い難い。
大雑把に言えばそうだけど、Lisp系を関数型言語に含める人と含めない人(MLの系譜の言語だけが関数型言語)で意見が食い違って争いというか、Lisp系含めない人は比較的若い人が多いので、(関数型言語の条件にパターンマッチは必須じゃないなどと)訂正される。
若い人でも情報系の学校でLispを関数型言語って習うと思うが、世間一般に普及してるとは言い難い。
379デフォルトの名無しさん
2024/10/19(土) 02:59:24.38ID:zdwsITl3 ぶっちゃけLispってもう年寄りしか使ってないよね
380デフォルトの名無しさん
2024/10/19(土) 03:38:52.89ID:OaEQIxry Lispは使うとか使わないとかじゃない
言語オタク度が一定のレベルに達すると常にそこにあることが見えるようになるものだ
言語オタク度が一定のレベルに達すると常にそこにあることが見えるようになるものだ
381デフォルトの名無しさん
2024/10/19(土) 05:03:40.93ID:pGZZ/Z6D Erlangですねわかります
382デフォルトの名無しさん
2024/10/19(土) 07:03:26.74ID:09S67de8 昨日リリースされたRust 1.82で、やっと Box<T>::new_uninit() が安定化された
これ、前にトラブってた、bindgenにC++のコンストラクタを作らせるとデータが壊れる件の解決策になるやん!
と思って、喜び勇んでbindgenのリポジトリ見に行ったら、特に対応予定はないみたいだった
これ、前にトラブってた、bindgenにC++のコンストラクタを作らせるとデータが壊れる件の解決策になるやん!
と思って、喜び勇んでbindgenのリポジトリ見に行ったら、特に対応予定はないみたいだった
383デフォルトの名無しさん
2024/10/19(土) 10:54:30.72ID:3T8uATjn Erlang の OTP に相当するのって Rust では何?
384デフォルトの名無しさん
2024/10/19(土) 13:15:37.02ID:ZlmyUR62385デフォルトの名無しさん
2024/10/19(土) 15:16:05.33ID:914NuxWA >>383
tokio
tokio
386デフォルトの名無しさん
2024/10/19(土) 16:54:27.33ID:zdwsITl3 今ってtokio一人勝ちってことでいいの?
他のランタイムに勝ち目ある?
tauriはtokioだけど、一応抽象化して直接見えないようにしてる努力は感じられた
でも実際にtokio以外を混ぜたらどうなるのかな? バグるなら抽象化した意味がないが
他のランタイムに勝ち目ある?
tauriはtokioだけど、一応抽象化して直接見えないようにしてる努力は感じられた
でも実際にtokio以外を混ぜたらどうなるのかな? バグるなら抽象化した意味がないが
387デフォルトの名無しさん
2024/10/19(土) 19:34:22.94ID:/3C3bE8g388デフォルトの名無しさん
2024/10/19(土) 20:35:05.03ID:11v9Pc45 >型無の関数型がありえる以上
ちょっと待って、それって「関数型」の定義が与えられてなけりゃ言えないことでしょ。
ちょっと待って、それって「関数型」の定義が与えられてなけりゃ言えないことでしょ。
389デフォルトの名無しさん
2024/10/19(土) 22:16:54.49ID:/3C3bE8g 関数型言語
390デフォルトの名無しさん
2024/10/20(日) 02:22:08.35ID:IoIIyUOe391デフォルトの名無しさん
2024/10/20(日) 07:51:49.41ID:Rpp5gjxc 横からだが、全ての関数型言語は関数型も一級オブジェクトだよ。
意味が無いから無いだけで、map関数の逆バージョン(関数と値の立場逆転)も作れる。
pam _ [] = []
pam x (f:fs) = f x:pam x fs
pam 1 [(+1), (+2), (+3)] = [2,3,4]
意味が無いから無いだけで、map関数の逆バージョン(関数と値の立場逆転)も作れる。
pam _ [] = []
pam x (f:fs) = f x:pam x fs
pam 1 [(+1), (+2), (+3)] = [2,3,4]
392デフォルトの名無しさん
2024/10/20(日) 08:53:33.20ID:vZg//j7Z そうなのよね。CS振りかざして偉そうにしてるヤツは単に分かってないだけで的外れ
393デフォルトの名無しさん
2024/10/20(日) 09:40:05.16ID:IoIIyUOe >>391
関数型自体をオブジェクトにして保存したり実行時解釈したりってできたっけ?
Rustならジェネリック関数の型引数を変数に保存して使うイメージ.
C++ならテンプレート関数のテンプレート引数を変数にして実行時解釈する感じ.
スクリプト言語とかならできるかな?
Rubyはできた気がする.Pythonはどうだったっけ?
JavaScriptはプロトタイプチェーンだからできるか.JavaScriptのプロトタイプオブジェクトを型と言って良いのか微妙だけど.
関数型自体をオブジェクトにして保存したり実行時解釈したりってできたっけ?
Rustならジェネリック関数の型引数を変数に保存して使うイメージ.
C++ならテンプレート関数のテンプレート引数を変数にして実行時解釈する感じ.
スクリプト言語とかならできるかな?
Rubyはできた気がする.Pythonはどうだったっけ?
JavaScriptはプロトタイプチェーンだからできるか.JavaScriptのプロトタイプオブジェクトを型と言って良いのか微妙だけど.
394デフォルトの名無しさん
2024/10/20(日) 09:41:59.72ID:N14K/WsC >>286
言語は関係なしにプログラマが優秀なだけだろ
言語は関係なしにプログラマが優秀なだけだろ
395デフォルトの名無しさん
2024/10/20(日) 10:01:17.80ID:KK2kuO2o396デフォルトの名無しさん
2024/10/20(日) 10:37:31.29ID:LzrvAVJD 歯透ける厨と同じ臭いがプンプンする
397デフォルトの名無しさん
2024/10/20(日) 13:32:41.76ID:AQmfmnaz ?
どこからか「関数型」が指すのがfunctionalからfunction typeにすり替わってないか
どこからか「関数型」が指すのがfunctionalからfunction typeにすり替わってないか
398デフォルトの名無しさん
2024/10/20(日) 14:28:18.13ID:xF+HnWMo399デフォルトの名無しさん
2024/10/20(日) 14:45:25.09ID:Rpp5gjxc >>393
関数型言語はオブジェクト指向じゃないのでオブジェクトは無いが…。
(OCamlならやCommon-Lispならオブジェクト指向もサポートしてるので、出来るかもしれないが)
というか、「全ての関数型言語は」と書いたのに、あなたの出す言語に一個も関数型言語は入ってないのだが…。
普通にできるジェネリック関数とか区別せずに、全ての関数でできる。
f = (+1)
g = print
h = g.f
h 1 =
2
と出力
mapM_ h [1..3] =
2
3
4
と出力
sequence_ [h 1, h 2, h 3] =
mapM_の時と同じ結果
(sequence_.tail) [h 1, h 2, h 3] =
3
4
と出力
関数型言語はオブジェクト指向じゃないのでオブジェクトは無いが…。
(OCamlならやCommon-Lispならオブジェクト指向もサポートしてるので、出来るかもしれないが)
というか、「全ての関数型言語は」と書いたのに、あなたの出す言語に一個も関数型言語は入ってないのだが…。
普通にできるジェネリック関数とか区別せずに、全ての関数でできる。
f = (+1)
g = print
h = g.f
h 1 =
2
と出力
mapM_ h [1..3] =
2
3
4
と出力
sequence_ [h 1, h 2, h 3] =
mapM_の時と同じ結果
(sequence_.tail) [h 1, h 2, h 3] =
3
4
と出力
400デフォルトの名無しさん
2024/10/20(日) 14:51:20.54ID:Rpp5gjxc あ、Haskell意外だと副作用のある関数の扱いは分からんが、普通の関数なら全ての関数型言語はできる。
むしろ、それがFP(関数プログラミング)で提唱されていること。
むしろ、それがFP(関数プログラミング)で提唱されていること。
401デフォルトの名無しさん
2024/10/20(日) 17:34:13.10ID:xPa/dMaC そして誰もツッコミすらしなくなった・・・
402デフォルトの名無しさん
2024/10/20(日) 17:43:19.05ID:IoIIyUOe >>398
「関数型」言い始めたのはその前の>387からだろ.
>390はその流れを受けているだけ.
>>393
もともとの話が>338(1,2,が同じことを言っているのか別のことを言っているのか)の話なんだから,その文脈での"Object"だよ.
とりあえずWikipediaの「第一級オブジェクト」あたりを下敷きにすればいいんじゃね?
ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E7%B4%
> 普通にできるジェネリック関数とか区別せずに、全ての関数でできる。
ということだけど,Haskellとかの関数型言語って,mapとかの高階関数そのものを引数にしたり戻り値にしたりできたっけ?
「関数型」言い始めたのはその前の>387からだろ.
>390はその流れを受けているだけ.
>>393
もともとの話が>338(1,2,が同じことを言っているのか別のことを言っているのか)の話なんだから,その文脈での"Object"だよ.
とりあえずWikipediaの「第一級オブジェクト」あたりを下敷きにすればいいんじゃね?
ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E7%B4%
> 普通にできるジェネリック関数とか区別せずに、全ての関数でできる。
ということだけど,Haskellとかの関数型言語って,mapとかの高階関数そのものを引数にしたり戻り値にしたりできたっけ?
403デフォルトの名無しさん
2024/10/20(日) 17:45:10.88ID:PyTRrFhl そろそろRustの話しろよ
404デフォルトの名無しさん
2024/10/20(日) 17:58:45.35ID:2ZyMYwfA >ということだけど,Haskellとかの関数型言語って,mapとかの高階関数そのものを引数にしたり戻り値にしたりできたっけ?
そらできるだろ
逆に関数がファーストクラスの言語でできないやつあるの?
そらできるだろ
逆に関数がファーストクラスの言語でできないやつあるの?
405デフォルトの名無しさん
2024/10/20(日) 18:04:59.62ID:jAtz6juv そもそもスレチで鮨
https://srad.jp/comment/135132
https://srad.jp/comment/135132
406デフォルトの名無しさん
2024/10/20(日) 18:07:49.61ID:gkezQsQG407デフォルトの名無しさん
2024/10/20(日) 18:16:41.15ID:Rpp5gjxc408デフォルトの名無しさん
2024/10/20(日) 18:20:10.46ID:IoIIyUOe >>406
もともとの話が>338(1,2,が同じことを言っているのか別のことを言っているのか)の話なんだから,その文脈での"関数"だよ.
> 「型無の関数型(言語)」の意味が通じてなさそうだからわざわざ言い直してるんじゃない?
「意味が通じてなさそう」とか言われても,「型無の関数型」自体が>387初出だから.>372に対してではなく自分に対して言い直しているのかしらん?
>407
できるのね.ありがとう.
そろそろ苦情が出てるしレスやめるわ.
もともとの話が>338(1,2,が同じことを言っているのか別のことを言っているのか)の話なんだから,その文脈での"関数"だよ.
> 「型無の関数型(言語)」の意味が通じてなさそうだからわざわざ言い直してるんじゃない?
「意味が通じてなさそう」とか言われても,「型無の関数型」自体が>387初出だから.>372に対してではなく自分に対して言い直しているのかしらん?
>407
できるのね.ありがとう.
そろそろ苦情が出てるしレスやめるわ.
409デフォルトの名無しさん
2024/10/20(日) 18:26:43.67ID:Rpp5gjxc カリー化してxsを見た目上消すのは関数を返すとみなせる。
f mf f = mf f
f mf f = mf f
410デフォルトの名無しさん
2024/10/20(日) 18:27:17.94ID:Rpp5gjxc あいよ
411デフォルトの名無しさん
2024/10/20(日) 18:37:12.50ID:+u+XD+zR 実現方法はキャプチャしたクロージャとかでもいいんだろ
他にも構造体とそれ用のメソッドを用意する形でも実現できる
関数という名に囚われて関数自体を返さなければいけないわけではない
他にも構造体とそれ用のメソッドを用意する形でも実現できる
関数という名に囚われて関数自体を返さなければいけないわけではない
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」★2 [ぐれ★]
- 【速報】 日経平均の下落率3%超す、財政懸念で長期金利上昇 [お断り★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- 台湾声明 「台湾は独立した主権国家、中国は台湾を統治したことがなく、中国は口出しする権利ない」 中国が高市首相に抗議で ★7 [お断り★]
- 【こんなの初めて…】民泊には既にキャンセルも 中国の渡航自粛で ★2 [ぐれ★]
- 【日刊】暇空茜、また敗訴🥸 [359965264]
- 『猟友会がクマ駆除を嫌がるなら潰すべき。職務を放棄するハンターから免許や銃を没収して罰金を取ろう』の声、ネットで上がる [932029429]
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- 台湾政党が高市首相「存立危機事態」発言に感謝の書簡「我々の心を強く奮い立たせるものでした」 [834922174]
- 高市のプライドはエベレストより高い。だから、発言を撤回できない [805596214]
- 【正論】有識者「高市早苗に合理的配慮をしなかった野党が悪い」 [175344491]
