[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 06/23 14:13 / Filesize : 233 KB / Number-of Response : 1025
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

プログラミング言語 Rust 2



1 名前:デフォルトの名無しさん mailto:sageteoff [2016/11/02(水) 03:12:40.30 ID:MYQ7Ohex.net]
Mozillaがリリースした、プログラミング言語「Rust」について語るスレです。

www.rust-lang.org/
https://github.com/rust-lang/rust

Servo
https://servo.org/
https://github.com/servo/servo

◆前スレ
プログラミング言語 Rust
echo.2ch.net/test/read.cgi/tech/1327489549/

159 名前:デフォルトの名無しさん [2016/12/22(木) 13:02:02.41 ID:y+mdv7YD.net]
tcl/tk 知らんの

160 名前:デフォルトの名無しさん mailto:sage [2016/12/22(木) 13:16:30.31 ID:vR+H7QAs.net]
rust/tkでも流行ってんのかとググったけどそんなことはなかった

161 名前:デフォルトの名無しさん mailto:sage [2016/12/22(木) 15:25:02.24 ID:cRDgF52C.net]
Rustって、こういう構造体を返す関数作れないんだね。

struct {
 file_content: String,
 header: &str, // 同じ構造体インスタンスのfile_contentのスライス
}

162 名前:デフォルトの名無しさん mailto:sage [2016/12/22(木) 21:30:47.90 ID:qT53/Nxx.net]
>>158
範囲情報をRangeで持っておいて、headerを関数にするのでは足りないかな?

https://play.rust-lang.org/?gist=4d511d2346cd32c4ef3b0348635b8910

163 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 00:33:16.85 ID:mdacHMN9.net]
Range.cloneは何とかならぬかと試行錯誤したけど
省略表記にした所でRangeを作るには変わりないから無駄な努力だった
ttps://play.rust-lang.org/?gist=f24e58d9a75d263fd75b0f651203a3b1

元の方も考えたけど、>>158は所有者が2名になるから無理だよなぁ

164 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 06:17:00.54 ID:6bIGT6Sw.net]
Announcing Rust 1.14
https://blog.rust-lang.org/2016/12/22/Rust-1.14.html

WebAssemblyサポートですって奥さん

165 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 07:54:39.71 ID:D+0Lwjqy.net]
>>159
なるほど。
これをRustでも書けてると見るか、書けてないと見るかは微妙なところだな。

166 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 08:18:02.54 ID:mdacHMN9.net]
このインターフェース設計が生理的に気分悪いならrustは使わない方が良さそう
極標準的な手法だから、これがダメなら何も出来ないよ

167 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 15:10:42.06 ID:6bIGT6Sw.net]
ライブラリ設計において、何かの値を所有権付きで受け取って変換するような関数が失敗した場合にはErrで元の値の所有権を返すようにしておいた方が便利だよな
ただ、std::collections::HashMapとかは値を削除するときキーの所有権を返してくれないから、ある値を取り出して変換して返すような処理で失敗した時にキーの複製を用意しないといけないのが気持ち悪い
所有権を受け取る前に借用してバリデーションを走らせるという手もあるけど、それはそれでオーバーヘッドになるし



168 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 16:07:53.79 ID:LOFIUVE3.net]
気にしすぎや

169 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 19:34:18.37 ID:efetRagZ.net]
マシン語読めって話何だろうけど 所有権を手離す為のcloneって
copy on write的な最適化は期待出来ないんかね?

170 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 22:45:04.10 ID:oLVQTEs3.net]
LLVM IRのことをマシン語と表現しているのか、それとも本当に機械語を読むつもりなのか

171 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 02:20:23.19 ID:/RBsJIky.net]
そもそも所有権を手放す為のcloneって何なんだ

172 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 12:04:03.69 ID:/RBsJIky.net]
OptionにもHashMapのor_insert_with()みたいな機能があれば良いのに

173 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 12:14:13.23 ID:XL3bxxKp.net]
Optionとコレクションクラスとの統一感は無いね

174 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 16:20:09.59 ID:dDtDlNib.net]
Someだったらそのまま、Noneだったら指定のOptionを得る
ってんなら単にOption.or()でいいのではないかと

イマイチ何を実現したいのか分からんけど

175 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 16:25:11.60 ID:/RBsJIky.net]
>>171
つまりこういうことがしたい
https://play.rust-lang.org/?gist=2efdceaaaa385ea7ee2486342ca415e4

176 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 16:29:36.25 ID:/RBsJIky.net]
あ、間違えた方を上げちまった
where T: Copyは無視してくれ

177 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 16:47:44.72 ID:dDtDlNib.net]
unwrapだと思ってたら実はas_refだったし
immutableな取り回しじゃなくmutableな取り回しだし、、、

immutableならOptionじゃ合わないわな
そこを諦めたら既存APIで十分な気がするけど、そこがこだ



178 名前:わりならStruct新設から始まりそう []
[ここ壊れてます]

179 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 16:56:08.78 ID:dn0dwenj.net]
unwrapのランタイムコストが気になるマン

180 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 16:59:11.50 ID:/RBsJIky.net]
>>174
self: &mut _を受け取るメソッドでself.cache的な何かを扱いたいことってない?
まあ別に、その場で書こうと思えば簡単に書ける処理だから絶対に欲しいってわけではないけど……

>>175
unsafe { mem::transmute::<_, &T>(self.as_ref()) }

181 名前:デフォルトの名無しさん [2016/12/25(日) 01:33:20.36 ID:P0r3EIva.net]
ぶっちゃけ今のRustってC++14の機能積極的に使うのよりメリットある?

182 名前:デフォルトの名無しさん mailto:sage [2016/12/25(日) 01:47:23.23 ID:jMjv2Bym.net]
borrow checkerが凶悪な所がメリット
あとはcargoが標準で色々やってくれるから、全くメリットがないこともないと思う

業務ならC++11/14を使うべきなんだろうけどさ
頑張ればsmart pointerとmakeで大体のことはフォロー出来そう

183 名前:デフォルトの名無しさん mailto:sage [2016/12/25(日) 04:20:17.08 ID:klev3clW.net]
C++は何でもできるんだから、新興言語のおいしい機能を盗み取っちゃえばいいじゃん

184 名前:デフォルトの名無しさん mailto:sage [2016/12/25(日) 07:43:09.19 ID:gfQaVVC2.net]
コンセプトちゃんはどうなった?

185 名前:デフォルトの名無しさん mailto:sage [2016/12/25(日) 20:33:17.39 ID:X66rp15o.net]
qiitaで済まんが、↓を読むとモダンなC++を使いこなすよりもrust使う方がよっぽど楽なんじゃないか
ttp://qiita.com/yumetodo/items/e49a673afd9a3ecb81a8
よく、C++の機能を全部学ぶ必要は無いよ使うとこだけ理解すればいいよ、と言う人がいるけど、
コードは書くより読む方が大変なことを失念してるんじゃないかと思う
他人のコードの読解は困難を極めますよって自白してんじゃないかと

186 名前:デフォルトの名無しさん mailto:sage [2016/12/25(日) 20:35:24.70 ID:OIpmFOQN.net]
あれやろ、職場のコード規約で使用する機能を制限すれば読むのにも困らんやろ(白目)

187 名前:デフォルトの名無しさん mailto:sage [2016/12/25(日) 20:50:48.74 ID:OHOD3vvf.net]
理解できない人がいるのでジェネリクスとやらは使ってはいけません



188 名前:デフォルトの名無しさん [2016/12/25(日) 23:52:57.50 ID:P0r3EIva.net]
>>183
ジェネリクスだめならモダン言語は殆ど、ってかjavaすらダメじゃね?

189 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 00:01:48.58 ID:mhrTCx4U.net]
JavaのジェネリクスもModern Java(造語)な時期じゃないかね
C++でもboostで使われてた頃な気がする

>>181をざっくり読んだけど、C++を仕事でやってたらこれくらいは別に問題ないと思うけどな
rustみたいに数ヵ月単位で言語仕様に仕変入る方がコードの解読に困難を極めないか?
古いバージョンで固定すればいいじゃんってんなら何も言うことない

190 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 01:02:26.94 ID:xO25f93t.net]
C++は継ぎ接ぎだらけのズタボロ言語

191 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 01:32:03.49 ID:zGEIM/Ml.net]
>>183
理解できない人をチームから外せばおk

192 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 02:42:52.09 ID:kYuQe4Wz.net]
C++を貶すつもりは無いけど、ジェネリクスもコンパイル時計算もtemplate任せってのが傍から見てて怖い
templateの過剰使用のせいか、エラーメッセージが分かりにくい&バグを潰しにくいっていう印象がある

ML系言語の発展で、型システムを柔軟にすれば大抵のことは分かりやすく実現できるよって分かって、
それをつまみ食いしたrustは実はかなり分かりやすいし、勉強の資料も実は少なくない

あと、https://github.com/rust-lang/rust/blob/master/RELEASES.md
で、1.0.0からLanguageの項目がどれくらい変わったか見てくと、実はほ

193 名前:とんど変わってないよ。
マクロが結構強化されたんで、マクロを定義しまくるcrateは影響があるかもしれんね。
ただ、そういうのは大抵DSLをマクロで!っていう特殊な事例が多いんで、何したって読みづらい
[]
[ここ壊れてます]

194 名前:デフォルトの名無しさん [2016/12/26(月) 03:53:18.15 ID:o+MLW/qO.net]
>>188
コンパイル時計算はconstexprでいいだろ

195 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 07:04:10.78 ID:mhrTCx4U.net]
>>188
お前がC++をよく知らないってことは分かった
使ってる言語を兎角推すのはまるでObjC信者のようだぁ
自身の言語が至上、他は総じてクソって見えるらしいな

196 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 07:45:24.49 ID:zGEIM/Ml.net]
ウィ ワント パースペクティブ。

197 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 07:59:25.35 ID:lZ2XshJp.net]
自分の使っている言語を押しまくるのはObjC信者に限ったことじゃないと思うんですが



198 名前:デフォルトの名無しさん [2016/12/26(月) 10:11:15.89 ID:vXnTXx4r.net]
Lispは神の言語

199 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 10:21:18.47 ID:y2AwbG3E.net]
S式は神の言語

200 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 11:42:54.85 ID:HAos+tGx.net]
C++は天動説
Rustは地動説

201 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 12:14:16.16 ID:kSu16y2+.net]
ocamlだってシンプルだったのが拡張につぐ拡張で最近は結構汚くなってるし
rustだって10年20年すれば汚くなるよ
奇麗なままでいられるのはユーザー数の少ない言語だけだ

202 名前:デフォルトの名無しさん [2016/12/26(月) 12:16:41.00 ID:HAos+tGx.net]
Dはユーザー少ないけど汚い

203 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 13:57:45.03 ID:3l9yWhJs.net]
言語仕様の拡張にRFCが必要な言語だから、無秩序に拡張できた過去の言語よりは綺麗な仕様になる圧力は高いと思う

204 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 13:58:25.74 ID:gUp/CjQ/.net]
Rustで多態やるのはenum, trait, Boxを使い分ければいいの?

205 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 15:39:49.33 ID:kSu16y2+.net]
>>198
C++のほうを見て同じことが言えるかな?

206 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 15:59:40.77 ID:y2AwbG3E.net]
Serdeがよく分からぬ

207 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 16:42:09.73 ID:stVLD6EM.net]
>>199
オブジェクト指向入門でよくある、哺乳類クラスとか、円や矩形クラスの
例(クラスツリー)を、Rustでどう表現するのか見てみたいな。



208 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 17:56:53.49 ID:R/Xz4XyC.net]
>>202
servoでDOM表現するためのコードでやっているけどなかなかえげつない実装らしい
この前あったrustのmeetupではほかの言語のやり方をそのままrustに持ち込むべきではないと言っていた

209 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 18:06:10.80 ID:lZ2XshJp.net]
そういえばクラスの継承がないのを不便に感じたことはないな

210 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 19:41:44.19 ID:ep/odFf8.net]
ていうか、Rustで nominal subtyping を再発明する理由がない
型クラスはad hoc多相を実現する仕組みだがそもそもOOのためのもんじゃない

211 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 20:36:47.57 ID:mhrTCx4U.net]
バズワードだらけで言いたいことが分からんけど
Rustでクラス継承を実現するなら、traitをツリー継承して実装すればいいってことだな!

イマドキのオブジェクト指向はツリー継承を崇めてないから自分はやらないけど

212 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 20:51:12.09 ID:J++O7+r9.net]
ツリーでない継承ってどんなん?

213 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 00:03:40.08 ID:z3Z5XFyz.net]
バズワードって何?流行の若者言葉?

214 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 02:03:02.61 ID:SQsOUYP2.net]
みんな知った風な口きくけど、誰一人としてその明確な定義を言えない言葉のこと
Web2.0とかセカイ系とか。『自分で吐いてる言葉の意味を自分で理解できていない』ような連中をのさばらせておくと発生してしまう

215 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 02:07:36.20 ID:4L8P6HZQ.net]
バズワード
buzzword
いかにも,もっともらしい専門用語。専門家や通人,仲間内が好んで用いるような言葉。

216 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 02:14:18.61 ID:M0D6LXD2.net]
結局、哺乳類クラスはどうすりゃいいわけ?

217 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 02:17:57.69 ID:/xy3dl1q.net]
哺乳類クラスなんてものを用いる設計が悪い
、というのは言い過ぎとしても、「哺乳類クラス」とかいう抽象的すぎる問題を持ってこられても議論のしようがなかったりする
現実の問題ではケースバイケースで適切な対処が異なるんだから



218 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 02:34:20.97 ID:M0D6LXD2.net]
>>212
設計がクソなのはそうかもしれないけど、世の中がJavaっぽいクラスを前提に
動いてるんだから、それを素直にコードに落とせないのはまずいよ。

DOMやGUIライブラリ(のラッパー)はそうでしょ?

219 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 03:23:41.04 ID:VnAYfBLQ.net]
オブジェクト指向な設計を、純関数型言語で実装できない!シネ!!みたいなね

traitとstructで無理矢理クラス継承を模倣すれば?
rustのお作法から外れて邪道感溢れるから出来るの分かっていても真面目に答えるヤツはここにはおらんよ(多分

220 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 03:28:37.64 ID:zWPkbd9P.net]
GObject、うっ、頭が……

221 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 04:14:04.89 ID:4L8P6HZQ.net]
>>212>>211が本当に「哺乳類クラス」を実装したいのか問うていただけだろうに、技術的観点で批判するのでなくシネとか何とか人格攻撃するのは違うでしょうに
>>213が本当に哺乳類クラスを必要としていたのだって結果論に過ぎないのに

222 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 04:27:55.09 ID:P0uTzVTB.net]
こんなのにいちいち突っかかってたらキリが無いだろ……
この程度の揶揄を無邪気に行う奴なんて世の中にはゴマンといる

223 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 06:29:43.86 ID:4L8P6HZQ.net]
error-chainはアプリケーションで使うには便利だけど、ライブラリで使うには微妙そうだな
・Errorオブジェクトがenumじゃないから直接マッチできない(kindメソッドを介す必要があり)
・Error型にattributeを設定できない(error_chain!が吐き出すドキュメントをそのまま使わざるを得ない。ErrorKindのvariantには設定できるけど)
・backtraceクレートが動く環境でしか動かない
ライブラリが外部に露出するエラー型はやはり手動で書くのが一番無難なのかねえ……
ドキュメントを書き換えるためにラッパ型を用意するのは本末転倒だろうし

224 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 07:26:24.51 ID:TsU75U35.net]
error_chainについては以前チラ見した程度の知識しかないけど、何に使うものなのかよく分からんかったわ
println!("error: {}", e);
let mut e: &Error = &e;
while let Some(err) = e.cause() {
println!("caused by: {}", err);
e = err;
}
これじゃあかんのか?

225 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 07:55:36.77 ID:O+RLyrRL.net]
>>218
backtraceはfearureでoffにできるから、ちゃんとCargo.toml書けばOK
ドキュメント生成できないのはissue立ってたからそのうちなんとかならないかと期待してる

>>219
error-chainは複数種類のエラーをまとめて一つの型で表現するときのボイラープレートを書かなくてもよくすることが目的だから、
ソースコードが冗長になってもよいならば別に使わなくてもなんとかなる
あとは、勝手にbacktraceを作ってくれるからエラー発生時のデバッグが少し楽になるというのもある

226 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 09:20:55.40 ID:4L8P6HZQ.net]
backtraceオフにできるのか。いいことを聞いた

227 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 10:13:26.91 ID:alTKLSSw.net]
公称部分型とかアド・ホック多相がバズワード扱いされてるってこと……?



228 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 10:18:17.48 ID:zWPkbd9P.net]
>>209で主語の大きい表現がなされたせいで不穏な空気になってるだけで、実際にバズワード扱いしてるのは>>206だけだろ
その>>206もバズワードという言葉を正しく使えてるかは微妙だし

229 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 11:12:32.24 ID:sIydEYNy.net]
専門用語を使うのはいいとして>>205は何が言いたいのか分からんよ

>>208
むしろ死語かな
知らない世代がいるなら老がい用語

230 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 11:28:54.23 ID:O+RLyrRL.net]
rustでクラス階層表現する話はこの辺見るのがよいと思う
https://doc.servo.org/script/dom/

231 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 13:49:54.13 ID:/xy3dl1q.net]
どちらにせよerror_chainはインターフェースの独自色が強すぎて一般向けのライブラリで使うには向かないと思うけどな
使用例を見ても、アプリケーションではrustupとかいう輝かしい例があるけどライブラリではめぼしい例もないよな?

232 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 13:57:00.38 ID:GwCWTN18.net]
今は有料になっちゃったけど、Learn C the Hard Wayっていうオンライン教材で、C言語でオブジェクト指向を作る講座を思い出す
構造体の最初のメンバに親クラスを定義すれば、キャストで親クラスになれるって手法だった
Rustでも親になる型の変数を用意して、適当なtrait、Asとか何とかを使えば作れるだろうとは思う

ただ、OOを使うべき場面ってのはダイナミックな用途に限られるんじゃないか
Trait Objectとかで大抵は事足りるはず

233 名前:デフォルトの名無しさん [2016/12/27(火) 14:02:04.36 ID:b9lc87EM.net]
OO好きねえ……

234 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 15:30:08.41 ID:/xy3dl1q.net]
>>227
やってみた。汚い
Deref coercionとかは知らん
https://play.rust-lang.org/?gist=788c6c09719636cd28481db388caccc4

235 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 15:50:42.37 ID:sIydEYNy.net]
>>229
汚くてワロタw

親構造体内包+Derefやってみたけどムリポ
メソッドオーバーロードを考えなきゃ良いんだろうけど、その場合の実用性はどうだろうね
ttps://play.rust-lang.org/?gist=43f8c19b64533a18262ce751d08b6d75

236 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 15:51:59.79 ID:sIydEYNy.net]
違う、オーバーロードじゃなくオーバーライドだ

237 名前:デフォルトの名無しさん mailto:sage [2016/12/27(火) 16:04:44.73 ID:M0D6LXD2.net]
>>227
ServoのDOMは、基本的にそのC言語でオブジェクト指向と同じみたいだね。
mem::transmute() を使ってる。
ただ、Castable#is()で判定できるから、それを忘れなければ、より安全って感じか。

このCastableを汎用的にしたやつがcrates.ioに有れば、便利かも。



238 名前:デフォルトの名無しさん [2016/12/28(水) 00:45:05.70 ID:bvnjBJpz.net]
関数型言語も狙うなら関数のオーバーロードあったほうがいいと思う。

239 名前:デフォルトの名無しさん mailto:sage [2016/12/28(水) 10:22:40.34 ID:33G5Uz6K.net]
traitじゃ駄目なの?
型推論がある言語で関数のオーバーロード(同名で型が異なる関数の定義)ができる言語なんて今のところ無いよ
オーバーライドはOOの意味合いだしなあ

240 名前:デフォルトの名無しさん [2016/12/28(水) 10:33:00.62 ID:yWrP/m5t.net]
>>234
>型推論がある言語で関数のオーバーロード(同名で型が異なる関数の定義)ができる言語
え?あるよね?

241 名前:デフォルトの名無しさん mailto:sage [2016/12/28(水) 10:49:12.17 ID:Pwrrr1Os.net]
ライブラリを作るときは、依存してるクレートについてdefault-featuresを切っても問題ないなら切っといた方が良さそうだね
ライブラリ側が有効にしてるfeatureはユーザ側でオプトアウトできないけど、ライブラリがfeatureを無効にしていてもユーザ側でオプトインできるし

242 名前:デフォルトの名無しさん mailto:sage [2016/12/28(水) 11:39:36.50 ID:j4SHG8/A.net]
冬休みだからか、すっとぼけた質問や俺得提案が多いな

243 名前:デフォルトの名無しさん mailto:sage [2016/12/28(水) 12:46:13.64 ID:zjOgRctZ.net]
あると思うけど関数型言語をねらうのにオーバーロードがあった方がよいのは理由がよく分からない

244 名前:デフォルトの名無しさん [2016/12/28(水) 13:05:53.71 ID:/YvbcywK.net]
オーバーロードよりも型クラス+カリー化の方が関数型っぽいな

245 名前:デフォルトの名無しさん mailto:sage [2016/12/28(水) 13:17:11.06 ID:yxR21hjj.net]
ErlangとかJuliaとか

246 名前:デフォルトの名無しさん [2016/12/28(水) 13:34:40.02 ID:/YvbcywK.net]
Juliaは未だにGithubで「オーバーロードを採用してしまったから部分的用できない、ではどういう記法で部分的用を短く書くか」、って揉めてなかったか?

247 名前:デフォルトの名無しさん mailto:sage [2016/12/28(水) 13:41:59.93 ID:SLz2RvoN.net]
そういや、rustって、構文解析の邪魔になりそうなものは積極的に排除するイメージ。
文末のセミコロンを今時採用すると思わんかった。



248 名前:デフォルトの名無しさん [2016/12/28(水) 14:12:42.94 ID:AaUHlvvb.net]
rustって部分適用とかカリー化とか書きやすいの?

249 名前:デフォルトの名無しさん mailto:sage [2016/12/28(水) 14:27:58.88 ID:9y3G1esR.net]
Rustのセミコロンは式を文にして返り値をユニット型にする演算子だからそりゃ必要だろう

250 名前:デフォルトの名無しさん mailto:sage [2016/12/28(水) 22:54:23.66 ID:tiZ71Spt.net]
ifやmatchが式なおかげで「if if let」とか「while match」とか書けるね
記述量は減るけど慣れてないとビックリしそう

あと「いふいふれっと」ってずっと言ってると
ちょっと「みこみこなーす」っぽい

251 名前:デフォルトの名無しさん mailto:sage [2016/12/28(水) 23:02:02.12 ID:6NcUzOVy.net]
ぽくはない

252 名前:デフォルトの名無しさん mailto:sage [2016/12/28(水) 23:57:43.05 ID:bDO+6moT.net]
>>244
蝉転んで区切るってやつか

253 名前:デフォルトの名無しさん mailto:sage [2016/12/29(木) 00:08:37.19 ID:pmAxOvWh.net]
審議拒否

254 名前:デフォルトの名無しさん mailto:sage [2016/12/29(木) 18:19:20.70 ID:7bfuEKFU.net]
セミコロンなくても if if let は構文解析出来るだろうけど面倒だったんだろうな
開発始めた頃はまだ末尾セミコロン死ねな風潮でもなかったろうし

255 名前:デフォルトの名無しさん mailto:sage [2016/12/29(木) 19:05:08.27 ID:pmAxOvWh.net]
ま、まあECMAScriptのautomatic semicolon insertionみたいなことになるよりはマシだから……

256 名前:デフォルトの名無しさん mailto:sage [2016/12/30(金) 06:51:41.42 ID:a1QfaOpy.net]
「行末セミコロン死ねな風潮」は行末セミコロン自動挿入のクソ言語のせいなんだから
「行末セミコロン死ね! だからRustも行末セミコロン自動挿入すべき!」とか意味不明の極致だろ

257 名前:デフォルトの名無しさん mailto:sage [2016/12/30(金) 09:15:43.02 ID:BAOxkPJ/.net]
唐突なPythonディスに俺がブチキレ



258 名前:デフォルトの名無しさん mailto:sage [2016/12/30(金) 12:52:44.59 ID:gA9NnhXP.net]
セミコロンあり無しそんなに重要か?

259 名前:デフォルトの名無しさん mailto:sage [2016/12/30(金) 14:09:34.73 ID:STL3vH6g.net]
行末セミコロンはフリーフォーマットには欠かせない必要不可欠なもの






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<233KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef