- 1 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 10:10:24 ]
- プログラミング言語 D について語るスレッドです。
過去スレは >>2 ■本家 ttp://www.digitalmars.com/d/ ttp://www.kmonos.net/alang/d/ (和訳) ■コンパイラ ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家) ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド) ttp://gdcmac.sourceforge.net/ (GDCのmac用バイナリ) ■参考URL ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究) ttp://dsource.org/ (dsource) ttp://www.sun-inet.or.jp/~yaneurao/dlang/ ttp://wisdom.sakura.ne.jp/programming/d/
- 152 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 00:01:06 ]
- アップデートまだー?
- 153 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 16:57:55 ]
- 関数が複数の値を返せたらいいのになあ・・・
- 154 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 17:04:45 ]
- Dにインデクサないの?
- 155 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 20:25:18 ]
- opIndex?
- 156 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:47:10 ]
- だよね
- 157 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:48:31 ]
- >>153
Tupleを返せたらいいんだけどな なんでできないんだ
- 158 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 01:21:34 ]
- Tupleはコンパイルタイムにしか存在しないデータ型だから無理じゃね?
- 159 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 03:43:07 ]
- Dには集合型ないの?
- 160 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 04:12:09 ]
- >>158
タプル自体の構成を変更したりはできないけど、 タプルの各要素を実行時に変更するのはOK。 ので、 int n; char[] str; Tuple!(int,char[]) retTupleFunc(){ return Tuple!(3,"hoge".dup); } Tuple!(n,str) = retTupleFunc(); というような感じのが、もっとマシな構文で実現される整合性の余地はある。
- 161 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 04:19:57 ]
- 早くタプルリテラルを追加してほしい。
- 162 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 04:24:44 ]
- $(int, char[]) だの @(int, char[]) だの、
まだ使ってない記号を導入するつもりはないんだろうかね。
- 163 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 04:42:07 ]
- それより、変数宣言以外での、式で使うカンマ構文をナシにして、
a,b,c = f(); で済むようにすりゃ簡潔でいいと思う。 f(x,y,z)とかf((x,y),z)とかやるときも構文の不整合起こさないで済みそうだし。
- 164 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 11:01:11 ]
- >>163
それ、不整合を起こさないためには必須だけど代わりの構文が無いと困る。
- 165 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 11:07:02 ]
- >>163
Luaでそんなことやってたけど、 便利だわな
- 166 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 13:40:38 ]
- カンマ演算子もタプルを生成するようにして、タプルをスカラーで評価したら一番最後の値が返されるようにするとか。
- 167 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 15:18:03 ]
- 今のところはこういうやつでお茶を濁すしかないのかね。
これは C++ だが。 www7b.biglobe.ne.jp/~robe/pf/pf011.html
- 168 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 15:54:29 ]
- テンプレート型にstaticな演算子が適用できないのは仕様?
struct S { static void opAssign(int a) { writefln(a); } } struct ST(T) { static void opAssign(int a) { writefln(a); } } void main() { S = 1; // ok ST!(int) = 1; // error ST!(int).opAssign(1); // ok }
- 169 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 17:18:08 ]
- alias ST!(int) STI;
STI = 1; とすれば通るけどね
- 170 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 17:42:19 ]
- 前にもそんな感じのテンプレートの挙動があったな。
まあ仕様じゃなくてバグだろう。
- 171 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 01:13:41 ]
- >>165
むちゃくちゃ好きだったLuaとSquirrelだけど D言語にはまった以降いらなくなってしまった・・・
- 172 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 01:16:16 ]
- 和訳の中の人はなんであんなにマメなんだ?
- 173 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 07:11:48 ]
- まあ、なんにしろありがたいことは確かだ。
- 174 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 11:56:59 ]
- FAQかもしれませんがGTK+ってDからも使えますか?
- 175 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 12:03:28 ]
- っ gtkD
- 176 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 12:22:53 ]
- Duit
www5.ocn.ne.jp/~tane/diary/d2007_02.html
- 177 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 12:24:50 ]
- >>175-176
ありがとうございます 調べたら色々出てきたので いくつか比較してみたいと思います ttp://www.autla.com/news/index.php?GUI%B3%AB%C8%AF%A4%CB%A4%C4%A4%A4%A4%C6
- 178 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 11:56:11 ]
- ttp://d.hatena.ne.jp/misky/20070806
これってどうなんじゃろ? 仕様外?
- 179 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 12:50:22 ]
- inが通るなら、outも通らなきゃねとおも
- 180 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 13:09:37 ]
- コンパイラ自身がassertion failureって言ってるなら
間違いなくコンパイラのバグだと思うけど。
- 181 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 13:11:52 ]
- どっちが?
inが通るのが? それともoutが通らないのが?
- 182 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 14:26:28 ]
- コンパイラのコード(.cファイル)内でassertion failureを起こしてるから
コンパイラにバグがあるのは確定。 関数リテラルでは"FunctionBody"が書ける仕様になってる。 これはin、out、bodyが書ける構文要素のことなので、 outを書けないのはバグ。 inが書けるのは仕様通り。 delegateを省略した場合に事前・事後条件が書けないのはバグ。
- 183 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 14:57:24 ]
- ところでWin32APIを軽くラップしようとしたら、
char[]をnullに出来ないので困っていたりする。 func(char[] str){ win32api(toStringz(str)); } func(null); とするとnullが""に暗黙変換されちゃって、funcにnullが持ち込めない。 nullableみたいのって無かったっけ?
- 184 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 15:16:56 ]
- str is null ? null : toStringz(str) では
- 185 名前:183 mailto:sage [2007/08/06(月) 15:31:32 ]
- >>184
func()と同じ理由でtoStringz()もnullを受け取ることはできないので、あまり意味はないかと。 toStringz(null)はtoStringz("")として呼び出される事になるので。 って、そう考えるとtoStringz()も使っちゃダメってことじゃないか。 めんどくせーなー。
- 186 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 15:41:08 ]
- void main() { int[3] a = [1,2,3]; }
実行時に "Error: Stack Overflow" ってなるんだけど、何が悪いのでしょうか? DMD 2.003を使ってます。
- 187 名前:184 mailto:sage [2007/08/06(月) 16:05:29 ]
- >>185
いやいやいや、toStringzにnull渡してないから。こう。 void func(char[] str){ win32api(str is null ? null : toStringz(str)); } 実際には何回もつかうだろうから関数化すりゃいいと思う。 > toStringz(null)はtoStringz("")として呼び出される事になるので。 違う。nullはnull。toStringzの実装が特に""とnullを区別してないだけで
- 188 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 16:06:30 ]
- >>184じゃないが
str is null ? null : toStringz(str) なのに toStringz(null) が出てくる理由がわからんし、 ポインタ型にnullを渡すと(p==0)になるでしょ常考。
- 189 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 16:10:06 ]
- >>182
writefln(array[out(i) { assert(i<a.length); } body { return 4; }()]); 仕様によれば、こういう変態的なコードもありなんだな これ試してて気づいたんだが、 writefln(array[{ return $-1; }()]); が、 writefln(array[{ return array.length-1; }()]); と等価になってないっぽい。
- 190 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 16:15:23 ]
- $の方値がぶっこわれてるな
>>186 DMDのバグ
- 191 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 16:24:44 ]
- >>185
空のchar[]とnullは区別できないよ。 import std.stdio; void main() { writefln("" is null); // false // 文字列リテラルはNULターミネータを持っている。 char[] s; writefln(s is null); // true // 配列の初期値はnull s = "".dup; writefln(s is null); // true // NULターミネータは複製されない。 s = "aa".dup; s.length = 0; writefln(s is null); // 長さを 0 にしても再利用のため(?)に同じ場所を指し続けている }
- 192 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 16:50:58 ]
- ちなみに、こういう気持ち悪いことにもなってるから注意が必要。
import std.stdio; void main() { string a = ""; writefln(a is null); // false writefln(a == null); // true }
- 193 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 17:41:04 ]
- win32api(str.length ? toStringz(str) : null); で良くね?
- 194 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:06:38 ]
- >>191-192
なるほど
- 195 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:52:03 ]
- win32api(str.ptr ? toStringz(str) : null);
とかどうよ
- 196 名前:183 mailto:sage [2007/08/06(月) 21:58:03 ]
- ウッヒョー。今まで仕様を勘違いして覚えてたのか俺は。
・配列はnull値を取れない ・nullは長さ0の配列に暗黙変換される とばかり思ってました。 えーと、正しくはこういうこと、でいいんでしょうか? ・配列はnull値を取れる ・null配列はほとんどの場面で長さ0の配列と同じ挙動をする ・両者はis nullの結果で区別できる >>184さんごめんなさい。正しくその書き方で事足りました。 みんなもありがとう。おかげでアホな誤解から解放されました。 でも("".dup is null)がtrueになる理由だけよく分からない……。
- 197 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 22:44:21 ]
- あれ? www.kmonos.net/alang/d/arrays.html
の配列のデフォルト初期化の項には > 動的配列は要素数0に初期化されます て書いてある。
- 198 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:00:28 ]
- >>196
・要素数が0になった場合、変数自体がnullに書き換えられる場合がある。
- 199 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:20:21 ]
- 大昔にも同じ議論をみたな。
結局なんかうやむやなまま今日に至るわけだけれども。 yaneu.com/cgi/yanebbs/dobbsr.cgi?a=view&topic_id=1069952491&res_id=542-600 news://news.digitalmars.com:119/bu5gub$13kh$1@digitaldaemon.com
- 200 名前:デフォルトの名無しさん [2007/08/07(火) 05:20:19 ]
- ttp://d.hatena.ne.jp/misky/20070806
うむむやはりこれはバグでしたか... もやもやがすっきりしました ありがとう賢い人たち
- 201 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 05:47:18 ]
- って、あげてしまった
(ご迷惑おかけしてすいません)
- 202 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 05:48:21 ]
- あげたら迷惑なの?
- 203 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 08:00:22 ]
- >>200-201
D言語をいじくる夏休みとはうらやましいかぎりだぞ
- 204 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 08:30:08 ]
- gdcはどうなってるんだい?
- 205 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 09:42:02 ]
- DFL 0.9.6 リリース
- 206 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 12:18:16 ]
- >>205
ちょっとコントロールが追加されたくらいかな
- 207 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:30:28 ]
- コンパイラにコンテンツアシストの支援機能を早く組み込め。
そしたらあっという間に普及するから。
- 208 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:36:51 ]
- こんな言語仕様が不安定な言語は普及しないよ。
D が流行るのは言語仕様が安定してからでいい。
- 209 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 02:16:30 ]
- つまりヲルターが死ぬまで流行ることはないということか
- 210 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 02:28:35 ]
- つまり、Rubyは、Matzが死ぬまで流行ることはないのだろうか
- 211 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 02:41:25 ]
- デリゲートリテラルの引数の型を推論できるようにならんかなあ。
void func(int delegate(int) dg); func( (i) { return i * 2; } ); とか、願わくば func(i => i * 2); とか書きたい。
- 212 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 05:41:35 ]
- 後のほうの記法がきもい
- 213 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 07:00:49 ]
- 素人乙
- 214 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 08:36:05 ]
- ラムダ記法はほしい
- 215 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 08:47:55 ]
- >>211
現状の戻り値推論だけなら、要求されているdelegate型と 生成したdelegate型が異なれば型エラー出るけど、 なんかその推論をやっちゃうとエラーの元になりそうだな。 むしろ仮引数名の方を省略したい。 (int){return @int * 2;} みたいな。 普通の関数でも省略できるとなおよし。
- 216 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 12:05:43 ]
- 今のままでいいよ
下手に省略すると、人間もコードから内容を推論しなきゃならなくなるからめんどい
- 217 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 12:31:20 ]
- DとObjective-Cを混ぜてみたいな。スクリプト言語より強力になりそうな気がしてね。
- 218 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 17:10:17 ]
- Objective-C++は失敗作だったけどな
- 219 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 18:54:09 ]
- 開発環境>>ライブラリ>>>>>言語仕様
って感じで、D言語は3.0になったとしてもはやらなそう
- 220 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 20:14:16 ]
- ヲルタータンが「言語仕様はこれにて平定!」って言わない限り無理ぽ
- 221 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 23:38:42 ]
- これにて閉廷!
- 222 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 23:59:34 ]
- これにて閉経!
- 223 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:00:11 ]
- はたして、進化をやめたDに使う価値はあるのだろうか。
- 224 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:05:11 ]
- せめて処理系がほぼ下位互換でないと使う気にはなれんね
- 225 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 03:31:04 ]
- >>223
価値ないな… D言語は変り続けることが美しいのさ…
- 226 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 04:00:04 ]
- 罷り間違ってD言語が普及してしまったら
下位互換性を重要視するようになると思うよ
- 227 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 04:00:49 ]
- それは困る
- 228 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 04:02:15 ]
- そんときゃE言語作ればいいじゃない
- 229 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 04:03:32 ]
- それはいい言語になりそうだな。
- 230 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 04:05:05 ]
- >>229
- 231 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 04:24:35 ]
- >>230は尊敬しているようです
- 232 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 04:31:07 ]
- E言語はもうあるけどな
- 233 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 04:34:54 ]
- かなりのものは既に使われてるよな。
何か昔一覧を載せてるサイト(不正確に見えたが)があったけど、見つからない。
- 234 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 07:05:25 ]
- scope File("hoge.txt") s;
なんていう表現があったら時々便利そうだなあ いらんけど
- 235 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 13:15:47 ]
- >233
ttp://www.kmonos.net/alang/abc/ これか?
- 236 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 13:49:49 ]
- >>234
scope s = File("hoge.txt"); でいいと思うよ。
- 237 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 18:18:19 ]
- 更新マダー
- 238 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 18:22:54 ]
- こっちのスレは1年以上待って、もっと待つつもりで、実装はさらに待つつもりなのにおまいらときたら
ttp://pc11.2ch.net/test/read.cgi/tech/1149440647/
- 239 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 23:08:43 ]
- >>238
なんだか誠に申し訳ないw でもDはDで……仕様確定マダー? そいやDの仕様もだいぶ増えてきた感があるけど、 まだコンパイラの実装はC++ほど大変でもないんかな? だとしたらどっかに決定的な違いがあるんだろーか。 教えてC++の偉い人ー。
- 240 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 23:14:38 ]
- ウォルタたんがDの理念の一つに掲げているのに
「処理系の作りやすさ」があるから、そうなんだと思うよ。知らないけど。
- 241 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 02:22:03 ]
- だれかDコンパイラを自分で作ってる人とかいないのかな
- 242 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 02:25:12 ]
- 少し前にd.D.announceに自分で作ってみたとかいう人がいたような
- 243 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 15:01:01 ]
- >>227
なんかわろたw
- 244 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 17:28:29 ]
- >>238
もうD言語使えよと言いたくなる場面ばっかりでわろた
- 245 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 18:00:30 ]
- DもC++0xも永遠に完成しない
- 246 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 18:05:45 ]
- C++ユーザがもっとDに流れてくれたらいいのに
似たような言語に人的資源が分散してるのがもったいない
- 247 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 18:09:41 ]
- やはりここは「ぼくらの」形式で間引きだな
- 248 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 18:14:44 ]
- C++用のライブラリ作ってるけど、
Dポーティングを念頭に書き換え始めてる というかDで類似の仕様設計を書き始めてる でも.NET用のポーティングもありかなと思い始めたり D#マダー
- 249 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 18:36:03 ]
- 普及するしないの分かれ目は
もはや言語がどうこうってところじゃなくなってるんだけどね
- 250 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 18:39:05 ]
- ちゃんと標準がTangoに置き換わるまで実質ライブラリさえ作れないような状況だろ。
今作ってもどうせ作り直しになるし。
- 251 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 18:54:19 ]
- 本当に完全にTangoに置き換わるのなら、もうTangoでライブラリ作ればいいだけの話のような。
……本当に標準がTangoに置き換わるって信じてもいいのか?
- 252 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 19:01:02 ]
- >>251
それが信じられないから困る phobosがダメなところとTangoの良いところってどんなのがある? phobosはダメだダメだと聞くがあまり具体的には出てこなくて まずは文字コード周りかな
|

|