公式
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:c48cFuZJ343デフォルトの名無しさん
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 実現方法はキャプチャしたクロージャとかでもいいんだろ
他にも構造体とそれ用のメソッドを用意する形でも実現できる
関数という名に囚われて関数自体を返さなければいけないわけではない
他にも構造体とそれ用のメソッドを用意する形でも実現できる
関数という名に囚われて関数自体を返さなければいけないわけではない
412デフォルトの名無しさん
2024/10/20(日) 23:14:31.47ID:Bo7WX30F413デフォルトの名無しさん
2024/10/21(月) 09:54:32.14ID:WDt/GORo もう病気の類なんじゃないのかなこの人は
アスペを認めるとザワザワして発狂してしまうの?
アスペを認めるとザワザワして発狂してしまうの?
414デフォルトの名無しさん
2024/10/21(月) 14:02:30.37ID:n20TdxL4 >>392
話の流れは追ってないけど、東大文系学科中退のホリエモン、
(もともと所属学科が存在しない)ハーバード大で法律と数学
の単位を取って中退したビルゲイツと、Fラン大学でcs学科
専攻した人を比較するのはおかしいと思うな。
話の流れは追ってないけど、東大文系学科中退のホリエモン、
(もともと所属学科が存在しない)ハーバード大で法律と数学
の単位を取って中退したビルゲイツと、Fラン大学でcs学科
専攻した人を比較するのはおかしいと思うな。
415デフォルトの名無しさん
2024/10/21(月) 22:09:07.40ID:SnMtmJ3l416デフォルトの名無しさん
2024/10/21(月) 22:49:21.88ID:/PsiTyLC >>415
Lispのマクロは健全なマクロ(hygienic macro)ではない
Lispのマクロは健全なマクロ(hygienic macro)ではない
417デフォルトの名無しさん
2024/10/21(月) 23:05:26.66ID:hCFqhCaa >>415
Lispではコードもデータも全部同じS式なので
S式で書かれたコード片をそのままデータとして扱えるから
というのがLispのマクロが強力な最大の理由
でもこれは関数型の話とはあまり関係と思う
Lispではコードもデータも全部同じS式なので
S式で書かれたコード片をそのままデータとして扱えるから
というのがLispのマクロが強力な最大の理由
でもこれは関数型の話とはあまり関係と思う
418デフォルトの名無しさん
2024/10/22(火) 00:53:30.71ID:OQZ/hYZy >>415
lispマクロと関数型言語は関係なくね?
lispマクロと関数型言語は関係なくね?
419デフォルトの名無しさん
2024/10/22(火) 02:07:57.31ID:auCI67yl420デフォルトの名無しさん
2024/10/22(火) 06:02:08.36ID:rwk9TcPR >>415
lispマクロってCommon-Lispのマクロだよね?
SchemeやarcなどLisp系にも色々あるのに、Common-LispがいかにもLisp全体であるかのように言わないでいただきたい。
lispマクロってCommon-Lispのマクロだよね?
SchemeやarcなどLisp系にも色々あるのに、Common-LispがいかにもLisp全体であるかのように言わないでいただきたい。
421デフォルトの名無しさん
2024/10/22(火) 21:51:40.07ID:f0BQn25L ここはLispスレ?
422デフォルトの名無しさん
2024/10/22(火) 21:54:55.10ID:I9yNs4FT はい、そうです
423デフォルトの名無しさん
2024/10/22(火) 21:59:52.45ID:nxkbQsPd >>416
その点Rustは健全なマクロ(衛生的なマクロ)だから優れてるな
その点Rustは健全なマクロ(衛生的なマクロ)だから優れてるな
424デフォルトの名無しさん
2024/10/22(火) 22:50:58.38ID:yMGUdyDA425デフォルトの名無しさん
2024/10/22(火) 23:33:18.43ID:yd5fGGcj ラムダ計算が計算モデルに持つとは、例えば自然数やcons cellなどの値がすべてチャーチエンコーディング等の手法を利用してラムダ項による表現を持つという意味でしょうか
不可能ではないかもしれませんが、esolang以外ではあまり聞きませんな
不可能ではないかもしれませんが、esolang以外ではあまり聞きませんな
426デフォルトの名無しさん
2024/10/23(水) 00:17:49.94ID:+ikzunZs 型無しのラムダ計算だと
|f| f(f)
で自分に自分を渡すみたいな気持ち悪い事ができるけど
一般的な関数型言語の型付きラムダ計算だと無理なんだよね
macro_rules! combinator { ($f:expr) => { ($f)($f) }; }
とかしてもコンパイルできるcombinator!(f)が存在しないはず
何か裏技あるかもしれないけど
|f| f(f)
で自分に自分を渡すみたいな気持ち悪い事ができるけど
一般的な関数型言語の型付きラムダ計算だと無理なんだよね
macro_rules! combinator { ($f:expr) => { ($f)($f) }; }
とかしてもコンパイルできるcombinator!(f)が存在しないはず
何か裏技あるかもしれないけど
427デフォルトの名無しさん
2024/10/23(水) 00:50:41.84ID:uXSdyuX/428デフォルトの名無しさん
2024/10/23(水) 00:54:14.76ID:XMcvf1I0 >>423
健全なマクロは健全にしか出来ないんだよ。
意図的に衝突させるという自由は奪われる。
普通にしてたら健全なマクロになりつつ必要なときにはそうじゃない選択もあって欲しい。
健全なマクロが優れているということはない。
状況による。
健全なマクロは健全にしか出来ないんだよ。
意図的に衝突させるという自由は奪われる。
普通にしてたら健全なマクロになりつつ必要なときにはそうじゃない選択もあって欲しい。
健全なマクロが優れているということはない。
状況による。
429デフォルトの名無しさん
2024/10/23(水) 01:19:20.88ID:wus7H+cg430デフォルトの名無しさん
2024/10/23(水) 08:51:56.69ID:4l11/KhE >>429
そういうなら根拠を提示しなよ
そういうなら根拠を提示しなよ
431デフォルトの名無しさん
2024/10/23(水) 09:46:54.15ID:reDRncMZ まあ「コーダーのミスを許さない」というRustのコンセプト的には、余計な束縛をしない健全マクロのほうがビックリネタ減るわな。
432デフォルトの名無しさん
2024/10/23(水) 12:28:40.45ID:wus7H+cg433デフォルトの名無しさん
2024/10/23(水) 12:55:59.93ID:E1QNIy5A >>427
macro_rules! combinator { ($f:expr) => { ($f)($f) }; }
↓
macro_rules! combinator { ($f:expr) => { (($f)($f)) }; }
にしないと抜け道があるなw
これだからマクロは苦手
macro_rules! combinator { ($f:expr) => { ($f)($f) }; }
↓
macro_rules! combinator { ($f:expr) => { (($f)($f)) }; }
にしないと抜け道があるなw
これだからマクロは苦手
434デフォルトの名無しさん
2024/10/23(水) 13:44:18.19ID:uXSdyuX/ >>433
変えても何も変わらないし、関係ない
マクロで定義してるこのcombinatorを関数にして型を付けようとすると、Haskellで言うRank2Types拡張相当のリッチな型が必要で、それは必ずしも「一般的な関数型言語の型」ではないという話なら分かる
変えても何も変わらないし、関係ない
マクロで定義してるこのcombinatorを関数にして型を付けようとすると、Haskellで言うRank2Types拡張相当のリッチな型が必要で、それは必ずしも「一般的な関数型言語の型」ではないという話なら分かる
435デフォルトの名無しさん
2024/10/23(水) 14:16:45.58ID:CetgrrtL >>423
proc_macro2 は
proc_macro2 は
436デフォルトの名無しさん
2024/10/23(水) 15:08:29.40ID:XMcvf1I0437デフォルトの名無しさん
2024/10/23(水) 15:49:07.30ID:CetgrrtL お前らなんか作ってんの?
438デフォルトの名無しさん
2024/10/23(水) 18:08:14.82ID:XMcvf1I0 身バレするから詳しいことは言えないんだ。
匿名前提のコミュニティの制約だからしょうがない
匿名前提のコミュニティの制約だからしょうがない
439デフォルトの名無しさん
2024/10/23(水) 20:22:42.34ID:cjlpqfP+440デフォルトの名無しさん
2024/10/23(水) 22:12:20.50ID:IFkNXH06441デフォルトの名無しさん
2024/10/24(木) 07:52:11.99ID:ZozkKVrc442デフォルトの名無しさん
2024/10/24(木) 10:38:00.79ID:nzvp2PCa443デフォルトの名無しさん
2024/10/24(木) 10:45:57.96ID:EC4ipT+P Rustは、ASTを使ったマクロが書けるということみたいですが、
それについて詳しい書籍は有りませんか?
それについて詳しい書籍は有りませんか?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
