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


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

プログラミング言語 Rust



1 名前:デフォルトの名無しさん [2012/01/25(水) 20:05:49.96 .net]
Mozillaがリリースした、プログラミング言語「Rust」について語るスレです。

www.rust-lang.org/

175 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 02:47:53.78 ID:CAQhwwqz.net]
fnで定義される関数とクロージャって区別されてるのか。fnで定義できる関数は環境を持たないクロージャとして扱うことができるけど、逆は無理なのな。
fn map<S,T> (x:Vec<S>, f:fn(S) -> T) -> Vec<T> { ... }
っていう高階関数はfnで定義される関数しか受け付けないが、
fn map<S,T,F:Fn(&S) -> T> (x:Vec<S>, f:F) -> Vec<T> { ... }
は関数もクロージャも通す。

クロージャの定義を見ればコンパイル時に環境を持たないで済むか分かると思うんだけどなあ
関数 ∈ クロージャみたいな関係なんだから、関数で済むなら関数にして欲しい

176 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 07:57:01.37 ID:WTvBD7gs.net]
unboxed closureならほぼ関数みたいに使えると思うけど。やりたいことは、boxingが必要なケース?

177 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 08:02:49.45 ID:WTvBD7gs.net]
よくわからん事を言ってしまった。
そもそも、クロージャとして扱うってどういう意味で言っている?
rustではクロージャ「型」というものは最近なくなってしまって、
ただFnを実装した型が関数のように呼び出すことが出来るだけという認識。
Fnを実装したある型が関数として定義されているか、
クロージャの構文を使って定義されているかは、
渡される側からは意識する必要がない。

178 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 14:02:52.06 ID:CAQhwwqz.net]
>>177
クロージャとして扱うってのは>>175の二番目のmap<S,T,F:Fn(&S)->T>っていう高階関数は、
fn foo(...)で定義された関数を渡すことができるし、let baz = |&:| { ... }とかやって定義したクロージャを渡すこともできる。
>>175の一番目のmap<S,T>はfnで定義した関数は渡せるけど|&:| {...}は渡せない。
つまり、関数とクロージャは別物なんだけど、クロージャを受け取る高階関数は関数も受け取れる。
それを指して「クロージャを受け取れる高階関数は、普通の関数もクロージャとして扱う」っていう意味で言った。

referenceのfunction typeの項
doc.rust-lang.org/reference.html#function-types
にもあるとおり、関数の型はfn(args) -> retと書けるもので、traitの実装とかではない。
一方でクロージャはFnトレイトの実装。違いは環境を持つか否か。

179 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 18:02:24.49 ID:5OYX7sX+.net]
>>178
おそらくだけど、Rustの言語仕様で閉じる範囲に関しては、すべて区別せず Fn traitに統一したい意図があると思う。
関数型が残されているのはFFIの都合かと

180 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 20:43:45.16 ID:CAQhwwqz.net]
そうなの?関数内で関数を定義できるからある程度は使えるんだけどな。

ついでに質問なんだけど、Fn traitの記法Fn(s) -> tってのはこれ専用の記法なの?
それとも一般的な記法の一例?

181 名前:デフォルトの名無しさん mailto:sage [2015/01/21(水) 01:12:38.06 ID:YXeDnvLj.net]
Fn みたいな () -> を使う記法はいまのところFnとFnMutとFnOnce専用だったはず。
他にこの記法使えるとうれしい場面があるならば提案すれば使えるようになるかも。

そもそもこの記法採用されたきっかけというのが、
Fn(A. B) -> C を desugar した形式の Fn<(A, B), C> が書きにくいというのもあるけど、
Fn のdesugarした形式自体がまだfixできていないから、
ひとまずsugarだけ使えるようにして実体の表記は使えなくしようというものだったはず。

実際、Fnの戻り値型はAssociated typeで与えるようにしようとか、
Foo()-> Aの記法は Foo<Output=A> の意味にしようとか、いろいろ議論があるらしい。

当面は、RFCウォッチすると議論が追えると思う。

182 名前:デフォルトの名無しさん [2015/01/21(水) 09:15:31.70 ID:mE4mMlsp.net]
トップレベルで型注釈を強制するのはひとつの見識だとは思うんだが、
型の表記がもう少しスッキリしたマトモなものじゃないと面倒臭すぎる。
なんでそういうところはMLやHaskellを見習わなかったのか……

183 名前:デフォルトの名無しさん mailto:sage [2015/01/21(水) 11:29:22.51 ID:4FCeMM5/.net]
>>182
本当だねえ。関数引数リストの中がゴミゴミしい



184 名前:デフォルトの名無しさん mailto:sage [2015/01/22(木) 01:22:08.93 ID:KmZyTX6h.net]
ttps://github.com/rust-lang/rust/issues/20797?#issuecomment-69947098
associated typesを使っているtraitが拡張できん…

185 名前:デフォルトの名無しさん mailto:sage [2015/01/25(日) 05:05:02.45 ID:47J/10kQ.net]
>>184の問題の再現コードは、
trait DeclaredTrait {
type Type;
}
impl DeclaredTrait for i32 {
type Type = i32;
}
struct Struct<B: DeclaredTrait> {
b: B,
b1: B::Type,
}
とあり、 Struct { b: 0, b1: 0}などとするとICEになるが、色々試した結果、Structを少し弄って
struct Struct<T, B: DeclaredTrait<Type=T>> { ...
とすれば回避できることが分かった。やったと小躍りしていたらfixされた。Oh...

186 名前:デフォルトの名無しさん mailto:sage [2015/01/29(木) 19:53:46.66 ID:zNgdEinm.net]
arthurtw.github.io/2014/11/30/rust-borrow-lifetimes.html
borrowingについてはbookより良い説明になってる。

stackoverflow.com/questions/22188088/what-does-a-scoped-lifetime-in-rust-actually-mean
この解答はかなりlifetimeについて分かりやすかった。

lifetimeとsubtypingの類似性をまとめようと思ったが力尽きた。
1つの事柄を説明しようとすると別の関連項目も入れた方がいいなとかやってると膨大になる。

187 名前:デフォルトの名無しさん mailto:sage [2015/02/04(水) 22:01:24.98 ID:TC60WqWu.net]
rustはじめました
バカなんですけど教えてください
fn main() {
let mut a = &1is;
let mut b = &2is;
a = b;
}
b = a だと平気なのに a = b だと叱られます。なぜですか

188 名前:デフォルトの名無しさん mailto:sage [2015/02/05(木) 01:26:26.56 ID:dGetvNcg.net]
先に宣言した方がlifetimeが長くなるルールだから?

189 名前:デフォルトの名無しさん mailto:sage [2015/02/05(木) 01:47:21.88 ID:u4P5BLYw.net]
nightlyなら通るよ>>187

190 名前:デフォルトの名無しさん mailto:sage [2015/02/05(木) 20:57:01.65 ID:xsa081YG.net]
お二方どうも

>>188
どこで寿命尽きるのかlifetimeムズカシイです

>>189
通るのですか
しかしエラー出ます rustc 1.0.0-nightly (eaf4c5c78 2015-02-02 15:04:54 +0000)
githubのをビルドしないとダメでしょうか
面倒なのでブック読みながらバイナリの更新待ちます

191 名前:デフォルトの名無しさん mailto:sage [2015/02/06(金) 00:07:57.08 ID:ZZvCiYpX.net]
今なら2015-02-04のバイナリ落ちてくるよ

192 名前:デフォルトの名無しさん mailto:sage [2015/02/06(金) 01:45:16.44 ID:f5aiPF8n.net]
うーん。変わらずエラーが出ます rustc 1.0.0-nightly (ba2f13ef0 2015-02-04 20:03:55 +0000)
本来>187はコンパイル通るものですか

193 名前:192 mailto:sage [2015/02/06(金) 01:49:34.64 ID:f5aiPF8n.net]
エラーこんな感じで
src/main.rs:3:14: 3:17 error: borrowed value does not live long enough
src/main.rs:3 let mut b = &2is;
                 ^~~
src/main.rs:2:17: 5:2 note: reference must be valid for the block suffix following statement 0 at 2:16...
src/main.rs:2 let mut a = &1is;
src/main.rs:3 let mut b = &2is;
src/main.rs:4 a = b;
src/main.rs:5 }
src/main.rs:3:17: 5:2 note: ...but borrowed value is only valid for the block suffix following statement 1 at 3:16
src/main.rs:3 let mut b = &2is;
src/main.rs:4 a = b;
src/main.rs:5 }



194 名前:デフォルトの名無しさん mailto:sage [2015/02/06(金) 02:10:23.34 ID:9alBoo2L.net]
playpenでも転けるし駄目っぽい

195 名前:デフォルトの名無しさん mailto:sage [2015/02/06(金) 17:39:55.66 ID:uj3RHvbm.net]
nightlyで通ると言ってた者だが、1月24日のは通ったが、今日2月6日では通らなくなってた。

196 名前:デフォルトの名無しさん mailto:sage [2015/02/06(金) 23:25:09.25 ID:gZSM6axtP]
やっぱりlifetimeの長い短いとちゃうかなぁ。
>let mut a = &1is;
>let mut b = &2is;
aの型は&'i isize
bの型は&'j isize
だとするとlifetimeの長さはi > jであるからaはlifetime i以上のisizeへの参照を要求する。
bのlifetimeはjであるからnot live long enoughなんじゃないかなぁ。

197 名前:デフォルトの名無しさん mailto:sage [2015/02/06(金) 23:36:12.02 ID:gZSM6axtP]
うーん、でも
fn print_type_of<T>(_: &T) -> () {
    let type_name =
        unsafe {
            (*std::intrinsics::get_tydesc::<T>()).name
        };
    println!("{}", type_name);
}

fn main() {
    let mut a = &1is;
    let mut b = &2is;
    print_type_of(&a);
    print_type_of(&b);
}
の出力は
&'static isize
&'static isize
やなぁ。

198 名前:デフォルトの名無しさん mailto:sage [2015/02/07(土) 01:46:20.54 ID:Gp97gMW3.net]
やっぱりlifetimeの長い短いとちゃうかなぁ。
>let mut a = &amp;1is;
>let mut b = &amp;2is;
aの型は&amp;'i isize
bの型は&amp;'j isize
だとするとlifetimeの長さはi > jであるからaはlifetime i以上のisizeへの参照を要求する。
bのlifetimeはjであるからnot live long enoughなんじゃないかなぁ。

199 名前:デフォルトの名無しさん mailto:sage [2015/02/07(土) 01:46:51.82 ID:Gp97gMW3.net]
うーん、でも
fn print_type_of<T>(_: &T) -> () {
let type_name =
unsafe {
(*std::intrinsics::get_tydesc::<T>()).name
};
println!("{}", type_name);
}

fn main() {
let mut a = &1is;
let mut b = &2is;
print_type_of(&a);
print_type_of(&b);
}
の出力は
&'static isize
&'static isize
やなぁ。

200 名前:デフォルトの名無しさん mailto:sage [2015/02/07(土) 08:13:43.05 ID:iwrmCGgo.net]
print_type_of ってデバッグでしょっちゅう使うから、標準ライブラリに入ってると良いのに

201 名前:デフォルトの名無しさん mailto:sage [2015/02/07(土) 11:09:20.93 ID:cThHTNUW.net]
get_tydescでlifetimeってstatic以外も出せるの?

fn main() {
let x = &1;
print_type_of(&x); // &'static i32
{
let k = &3;
print_type_of(&k); // &'static i32
}
}

202 名前:デフォルトの名無しさん mailto:sage [2015/02/07(土) 13:33:02.38 ID:cThHTNUW.net]
https://github.com/rust-lang/rust/pull/21657
https://github.com/rust-lang/rust/pull/21022
何言ってるか分からん。誰か解説してください。

203 名前:デフォルトの名無しさん [2015/02/21(土) 07:04:27.61 ID:Olg1CcTP.net]
1.0.0 あるふぁ2 来た

We’ve managed to land almost all of the features previously expected for this cycle.
The big headline here is that all major API revisions are finished: path and IO reform have landed.
At this point, all modules shipping for 1.0 are in what we expect to be their final form, modulo minor tweaks during the alpha2 cycle. See the previous post for more details.

blog.rust-lang.org/2015/02/20/Rust-1.0-alpha2.html

ってことは主な標準ライブラリのAPIも安定するってことか?
安定バージョン出たら使おうと思ってたからそろそろ本格的に勉強しよう



204 名前:デフォルトの名無しさん mailto:sage [2015/02/21(土) 07:08:43.49 ID:Olg1CcTP.net]
rust 日本で人気ないのなんでだろ
hackernews とかでは話題になるのに

205 名前:デフォルトの名無しさん [2015/02/21(土) 07:54:16.64 ID:r4ISt4ZW.net]
なってねーよ
Rustユーザーの声がでかいだけ
Githubのトレンド見ろよ
てかいつ1.0になるんだよ
コンパイルクソ遅せーよ

206 名前:デフォルトの名無しさん mailto:sage [2015/02/21(土) 08:28:43.29 ID:R5TBrCid.net]
今見たらハッカーニュースで話題になっててワロタ

207 名前:デフォルトの名無しさん mailto:sage [2015/02/21(土) 11:27:04.19 ID:Fus77TES.net]
日本人なんでいつも出遅れじゃん

半島人や大陸人ではないので念のためw

208 名前:デフォルトの名無しさん mailto:sage [2015/02/21(土) 11:37:56.64 ID:Fus77TES.net]
RELEASES.md
Version 1.0.0-alpha.2 (February 2015)
ttps://github.com/rust-lang/rust/blob/master/RELEASES.md#version-100-alpha2-february-2015

本題と離れたこの辺が好き→Rust is tested against a LALR grammar

209 名前:デフォルトの名無しさん mailto:sage [2015/02/21(土) 18:56:18.12 ID:NoRQyCne.net]
日本はシステム寄り言語はあまり盛り上がらない印象
フレームワークでこんなんできた、とかそういうのばっか

210 名前:デフォルトの名無しさん mailto:sage [2015/02/21(土) 19:05:24.66 ID:XLU71/kI.net]
そのフレームワークにも乗り遅れてるけどな

211 名前:デフォルトの名無しさん mailto:sage [2015/02/21(土) 20:18:51.42 ID:4tV2h1eL.net]
今のペースだと1.0は早くても5月の半ば
GWあたりから勉強すればいいや

212 名前:デフォルトの名無しさん mailto:sage [2015/02/21(土) 22:16:25.60 ID:u58zLpzB.net]
ttps://github.com/uutils/coreutils
Cross-platform Rust rewrite of the GNU coreutils

面白そうだから時々覗いてるけど、作る宣言してやりかけか音沙汰なしが多い

213 名前:デフォルトの名無しさん mailto:sage [2015/02/21(土) 22:19:24.18 ID:SweHsfSk.net]
1.0が出てからが本番



214 名前:デフォルトの名無しさん mailto:sage [2015/02/21(土) 22:47:20.72 ID:24QmOmn3.net]
最近Nimとの比較記事よく見る
試したことないが速いんか

215 名前:デフォルトの名無しさん [2015/02/22(日) 05:47:39.50 ID:XKjiDtco.net]
試せよ
馬鹿なの?

216 名前:デフォルトの名無しさん mailto:sage [2015/02/22(日) 08:13:00.52 ID:NjIsBkYB.net]
やだね

217 名前:デフォルトの名無しさん mailto:sage [2015/02/22(日) 10:43:53.32 ID:x4NvaSP0.net]
"「Unix in Rust」の作者がRustを捨ててNimに移行"
ttp://developers.slashdot.jp/story/15/02/20/2132207/

Nimの詳しいところは見てないけど、ソースぱっと見で括弧や大文字小文字のめりはり無くて散り散りした感じは嫌だな
その点はこっちの方がいい

218 名前:デフォルトの名無しさん mailto:sage [2015/02/22(日) 20:28:37.40 ID:0ELzUNxg.net]
NimはRustよりかなり前からあったでしょ。少なくともぽっと出の新人じゃない。

Nimは高速化、拡張の手段が多い(テンプレート&マクロ, コンパイル時計算, 最適化処理)にもかかわらず、
それらを作るときに変態的な見慣れぬ処理をしているようには見えない。
この、LispのマクロがPythonの文法でやれているのがおそらく一番凄いところ。
Python人口は多いから間口は広いと思うよ。Pythonと違ってまともなスコープだし。

型システムはRustの方が見通しが立っている。Nimはちょっと独特。
そして何より、Rustは低レベルもターゲットだけど、Nimはそうじゃない。
高速 -> 低レベルってのは昨今じゃ成り立ってない。

219 名前:デフォルトの名無しさん mailto:sage [2015/02/22(日) 20:59:13.82 ID:LRANqcPT.net]
あっちはGC、こっちは全手動

220 名前:デフォルトの名無しさん mailto:sage [2015/02/22(日) 22:12:46.57 ID:7JvXqGjL.net]
>>219
全手動って、ほぼRAIIとレファレンスカウンタで足りてるように思うけど。
別にmalloc,freeを一々手で書いてるわけではない。

221 名前:デフォルトの名無しさん mailto:sage [2015/02/23(月) 00:57:37.90 ID:AFp5DLmZ.net]
NimのGCがスレッドセーフになるのと、RustにGCが搭載されるのと、どっちが先か

222 名前:デフォルトの名無しさん mailto:sage [2015/02/23(月) 08:07:08.31 ID:5h1ypUSf.net]
RustはGC搭載だったのを取り除いたんじゃなかったか

223 名前:デフォルトの名無しさん mailto:sage [2015/02/23(月) 19:40:30.09 ID:eyhGdPbs.net]
RustでもDでもNimでもなんでもいいよ
俺は勝ち馬に乗りたいだけだ
共倒れになるのが一番困るんだよ



224 名前:デフォルトの名無しさん mailto:sage [2015/02/23(月) 21:48:25.71 ID:hrwL6DMU.net]
勝ち馬おじさんは適当なほにゃららbindingsでも作ってオポを得てください

225 名前:デフォルトの名無しさん mailto:sage [2015/02/24(火) 00:16:34.89 ID:Xk/EueOy.net]
>>222
RustのあれはGCじゃなくて今で言うところのRcだったはず
GCの一種といえば一種だけど、実装は異なるから区別したい

226 名前:デフォルトの名無しさん mailto:sage [2015/02/24(火) 02:31:58.07 ID:F5ABen3P.net]
参照カウンタもオブジェクトマップも両方GCで最近の参照カウンタは実行時じゃなくてコンパイル時にやるGCじゃないやつがあるんだよ。

227 名前:デフォルトの名無しさん mailto:sage [2015/02/27(金) 03:23:46.29 ID:SOolYU16.net]
Boxはownership付きのポインタだ!と気付き、ヒープに限定しなくてもいいんじゃないかと思ったんだが、
move semanticsがあるので、そんなに便利にはならないことが分かった。
うまくできているなと思う。

228 名前:デフォルトの名無しさん mailto:sage [2015/02/28(土) 17:38:52.88 ID:zVTmyizc.net]
RustでC++のコードを呼び出せるようにならないかな

229 名前:デフォルトの名無しさん mailto:sage [2015/02/28(土) 17:40:37.54 ID:ODdhY4Z/.net]
呼べるんじゃね

230 名前:デフォルトの名無しさん mailto:sage [2015/03/01(日) 14:43:26.72 ID:GK+mth0P.net]
FFIくらいあるじゃろ

231 名前:デフォルトの名無しさん mailto:sage [2015/03/02(月) 19:48:54.98 ID:jKoObBcz.net]
ServoではCのラッパー関数作ってるって書いてあった
ただそれだと関数呼び出し増えた分のオーバーヘッドがあるから、
言語を跨がった最適化を検討中だとか

232 名前:デフォルトの名無しさん mailto:sage [2015/03/02(月) 21:38:37.91 ID:r8lAZceI.net]
rust自身も自分用llvmを使っていて、ビルドに超時間がかかる。
Servoは自分用rustを使っているのでもっと時間がかかるので、面倒でしょうがない。

233 名前:デフォルトの名無しさん mailto:sage [2015/03/02(月) 22:35:12.26 ID:jKoObBcz.net]
同じくrustcのバージョン固定してるcargoはnightlybuildのバイナリ使ってるけど、
servoはソースからコンパイルしてるの?



234 名前:デフォルトの名無しさん mailto:sage [2015/03/12(木) 17:19:15.80 ID:RfbJhqVK.net]
してた。ゴ食わず嫌いだったゴメンよ

235 名前:デフォルトの名無しさん mailto:sage [2015/03/16(月) 00:17:19.80 ID:eDQflfth.net]
rustは配列内包無いん?

236 名前:デフォルトの名無しさん mailto:sage [2015/03/20(金) 18:24:48.01 ID:+SAQAguo.net]
今は動かない&配列じゃなくてイテレータを返すやつだが、
https://github.com/bsteinb/rust-iteratorcomprehensions
を自分で修正したらいいんじゃないかな。うまくいったら使い心地とか教えてほしい

ところで、マクロに名前空間とか欲しくない?vec!じゃなくてVec::new!みたいにできたら、
長い名前を付けないでも衝突の心配が無くなっていいと思うんだけど

237 名前:デフォルトの名無しさん mailto:sage [2015/04/01(水) 20:39:05.61 ID:cmpu1vG2.net]
ちょっと見ないでいると新しい構文ができてたり、前の構文が禁止になったりと変遷がまだ激しい
関数定義にも型推論が効くようになったらありがたいんだけど、lifetimeパラメータがあるから当分は無理だろうな

238 名前:デフォルトの名無しさん [2015/04/04(土) 10:44:07.36 ID:3u9gfu59.net]
ttp://blog.rust-lang.org/2015/04/03/Rust-1.0-beta.html
ベータきた

239 名前:デフォルトの名無しさん mailto:sage [2015/04/04(土) 17:25:52.34 ID:tHhrzAt2.net]
これで他所様のcrateがコンパイルできないって事態が減るのか。ありがたや。

240 名前:デフォルトの名無しさん mailto:sage [2015/04/06(月) 02:32:19.13 ID:h+YQESxX.net]
std::fsのPathExt使いたいんだけどどうすりゃいいの?
#![feature(PathExt)]追加してけど今度はこれに対して文句言われるし

241 名前:デフォルトの名無しさん mailto:sage [2015/04/06(月) 07:54:14.20 ID:TRGNibS3.net]
>>240
使ってるrustはbetaとnightlyのどっち?
unstableな機能はbetaじゃ使えないから、nightlyを使う必要がある

242 名前:デフォルトの名無しさん mailto:sage [2015/04/06(月) 09:14:39.34 ID:SQyZe7Rp.net]
>>240
#![feature(path_ext)]としたら動かない?あと1.0.0-betaじゃなくてnightly buildだったらunstableがエラーにならない、はず。

243 名前:デフォルトの名無しさん mailto:sage [2015/04/07(火) 17:58:26.92 ID:sYJ921on.net]
nightly buildにして#![feature(path_ext)]にしたら動きました



244 名前:デフォルトの名無しさん [2015/04/19(日) 19:52:26.06 ID:KK4Vp0dw.net]
rust-lang.orgのトップにあるコード、あれでRustに魅力を感じることはないよね……

245 名前:デフォルトの名無しさん mailto:sage [2015/04/19(日) 22:55:50.22 ID:Pae6mGZb.net]
どんなコードなら魅力を感じる?

246 名前:デフォルトの名無しさん mailto:sage [2015/04/20(月) 20:41:29.82 ID:SBrGan7W.net]
パターンマッチはRustくらい低レベルな分野では珍しいから悪くはない。
だけど色くらい付けた方がいいのは確か。

247 名前:デフォルトの名無しさん [2015/04/21(火) 12:34:26.69 ID:DovQc0Av.net]
その程度の輩を入口でフィルタアウトできてちょうどいい

248 名前:デフォルトの名無しさん mailto:sage [2015/04/21(火) 20:58:23.87 ID:8SfamI7q.net]
完成度高いけど読みづらい
色々詰め込みましたって感じであまりセンスを感じないかな

249 名前:デフォルトの名無しさん mailto:sage [2015/04/21(火) 21:13:43.96 ID:t5rHangx.net]
syntaxにケチつけてセンスとか言ってるのも片腹ポンポンペイン感がある
見た目はC言語ユーザーに合わせてsemanticsは全然違ようにしてあるのに

250 名前:デフォルトの名無しさん mailto:sage [2015/04/21(火) 22:17:14.88 ID:p6Hmsc0c.net]
構文のC言語風な部分に文句を言ってる訳じゃなさそうだが……

251 名前:デフォルトの名無しさん [2015/04/21(火) 22:35:19.48 ID:wBLqiLA1.net]
実際、読みづらいし書きづらいだろ。
関数型の感覚で書こうとするといたるところで引っかかる。

直和型に対するenumっていう命名のセンスも
シンタクスの話だが、無視できない筋の悪さを感じる。

252 名前:デフォルトの名無しさん mailto:sage [2015/04/22(水) 00:19:44.26 ID:G0rTsYMJ.net]
Mozilla自体、将来性怪しい

253 名前:デフォルトの名無しさん mailto:sage [2015/04/22(水) 01:52:28.56 ID:8x+/Tpq3.net]
GNUもそうだけどだいたいのユーザーは結局利便性>>>思想だから
その思想に属するソフトが最も良い時はその理念を支持してくれるけど
そうじゃなくなったら...ねえ



254 名前:デフォルトの名無しさん mailto:sage [2015/04/22(水) 03:13:38.70 ID:Itj79n5U.net]
泥臭いレベルで考えれば直和型はenumでいいと思う。
以前は、例えばOption型のand_thenとかor_elseがクロージャを取らなかったから繋げるのが面倒だったけど、
今はそうでもないよ。

ただ、プロトタイピングとか手探りでモックアップ的なものを書きながら試すのは相変わらずしんどい。
慣れたら型エラーlifetimeエラー出さずにガリガリ書けるのかもしれんが、「誰が資源の所有者であるか」を意識し続けるのはまだ難しい

255 名前:デフォルトの名無しさん mailto:sage [2015/04/23(木) 23:36:44.51 ID:wT/D2HMU.net]
javaのenumも定数クラスをフィールドと見なせば直和型だがセンス悪いですか・・・。
定義もEnum<E extends Enum<E>>だし
クラス使ったオブジェクト指向っぽくやるとそうなるんじゃないかな。

256 名前:デフォルトの名無しさん [2015/04/24(金) 12:44:05.34 ID:/IU9j/kd.net]
enumは直和型の特殊事例として表現できるが、
逆に直和型をenumの拡張とみなしているうちは面白い使い方はできないだろ。

257 名前:デフォルトの名無しさん mailto:sage [2015/04/24(金) 22:34:58.83 ID:w/TzYGT8.net]
特殊事例じゃなくて表現方法の1つじゃないの?
例えばhaskellの直和型で可能でenumじゃ無理なことって何がある?
面白い使い方って色々とサポートが必要でしょ?特にメモリ周りで。
例えばリストだったらenum List<T> { Nil, Cons(T, Box<List<T>>)}って面倒だったり、
コンストラクタを関数として扱おうとするなら部分評価時のクロージャを誰が保持するのか利用者が注意しなくちゃならない。
そういう細々としたことをGCや遅延評価で隠せない、隠さないのがいいところでもあるんだから。

オーバーヘッド無しにもっと便利にできるよ!っていうなら取り入れられるよ多分。
低レベルな分野で型推論とか自動メモリ管理とか入れようとしたらどうなるの?っていう実験やってるようなもんだし。

258 名前:デフォルトの名無しさん [2015/04/25(土) 09:17:20.05 ID:YZfn/g4I.net]
ServoみたいなRustの大きいプロジェクトでは
ファントム型がよく使われてるが、これが普通に定着するといいな。

ただ、型はすぐ濫用されるからなあ。
Rustで型レベルプログラミングとか見たくないわ……

259 名前:デフォルトの名無しさん [2015/04/28(火) 14:45:42.12 ID:TsKA4yAm.net]
Reenix: Implementing a Unix-Like Operating System in Rust
ttps://twitter.com/rustlang/status/592743898692321280

早速OS作ってる人いたか

260 名前:デフォルトの名無しさん mailto:sage [2015/04/28(火) 14:58:13.79 ID:nSrS/3uC.net]
https://github.com/rust-lang/rust-wiki-backup/blob/master/Operating-system-development.md

Rust OS勢は前から結構いるのでどの程度のものなのか謎である

261 名前:デフォルトの名無しさん mailto:sage [2015/04/28(火) 16:10:37.53 ID:TsKA4yAm.net]
ほんとだ、いろいろいるわ
でもちょっとブートしてみた、とか何とかutils作ってみた系が多くて
ガチOS始めた人は少数なのか

262 名前:デフォルトの名無しさん [2015/05/05(火) 13:51:43.12 ID:k0XsKdeW.net]
パーティ行きたいけど遠いな(´・ω・`)
ttp://www.eventbrite.com/e/copenhagen-rust-launch-party-tickets-16663376608
やっと1.0、そろそろ本気出す人多そう

263 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 06:07:02.36 ID:mzucxP2W.net]
日本でもあるよ。枠埋まっちゃったけど
ttp://rust-samurai.connpass.com/event/14649/



264 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 09:17:16.43 ID:JOkpKlyr.net]
自分の使っているディストリはソースからビルドされたrust(1.0.0-beta.3)を使っているため、cargoは入っていない。
で、cargoがnightly(1.1.0系列)に追随している&他のパッケージもnightly追従になっているおかげでcargoのビルドがCargo.tomlを編集しないと通らない。
travis CIに通っているパッケージもnightly準拠。ええい、安定と言うにはまだ色々あるぞ。

265 名前:デフォルトの名無しさん [2015/05/06(水) 10:01:59.45 ID:cmDHtTLB.net]
rust開発チームは何かと前のめりな人が多いのかな

266 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 11:33:10.40 ID:2ABYi4qj.net]
前のめりな人ってどないやねん

267 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 13:55:18.13 ID:xpDcmA5j.net]
いろいろあるけどとりあえず1.0にして酒盛りだw

直す所はまだあるとしても、仕様が固まってくれると学ぶ気になれるのでありがたい、けど

268 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 16:17:50.78 ID:am6Qsc64.net]
cargo使うにはnightly build使えって事?

269 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 22:51:00.49 ID:JOkpKlyr.net]
>>268いや、公式サイトからバイナリ落として使うなら1.0.0-beta.3にcargoが入っているので大丈夫。
自分のLinuxディストリがソースからビルドしたものを提供していたり、自前でrustをビルドしている人は自分でcargoをビルドする必要がある。
で、自分でbeta用のcargoをビルドするのが面倒だねって話。

crate.ioのgetting startedは相変わらずnightlyを推奨しているのは温度差を感じる。
Cargo.tomlにコンパイラのバージョンあるいはstdのバージョンを示すダミーcrateを登録できたらいいのか?

270 名前:デフォルトの名無しさん mailto:sage [2015/05/07(木) 00:38:18.86 ID:aZRIIXEP.net]
>>264
travisはbetaチャンネルのコンパイラとcargo使うオプションあるよ。
フォーラムにやり方の投稿があったはず

271 名前:デフォルトの名無しさん mailto:sage [2015/05/07(木) 13:27:05.75 ID:23tsmTPn.net]
>>263
日本人のcontributorって結構いるの?

272 名前:デフォルトの名無しさん mailto:sage [2015/05/07(木) 17:33:22.03 ID:aZRIIXEP.net]
>>271
GitHubでの開発だからいわゆるcontributorとはずれちゃうんだけど、
PullRequest出してマージされてる日本人は何人か見たことある
今回の主催の人はservoリポジトリへのコミット権持ってて結構活躍している

273 名前:デフォルトの名無しさん mailto:sage [2015/05/07(木) 18:24:03.66 ID:ADm0d2/c.net]
On Lisp 和訳の人の名前を見た気がする



274 名前:デフォルトの名無しさん mailto:sage [2015/05/11(月) 03:01:17.51 ID:bJJob3eC.net]
BetaのドキュメントにComing Soonが多いんだが、Nightly見た方が良いの?

275 名前:デフォルトの名無しさん [2015/05/12(火) 01:10:22.42 ID:xKmS5U3V.net]
どうせ動かないんでしょ






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

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

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