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/
2 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 10:12:05 ] ■過去スレ Part13 pc11.2ch.net/test/read.cgi/tech/1177499924/ Part12 pc11.2ch.net/test/read.cgi/tech/1171037394/ Part11 pc10.2ch.net/test/read.cgi/tech/1165621441/ Part10 pc8.2ch.net/test/read.cgi/tech/1158013550/ Part 9 pc8.2ch.net/test/read.cgi/tech/1146656260/ Part 8 pc8.2ch.net/test/read.cgi/tech/1137068104/ Part 7 pc8.2ch.net/test/read.cgi/tech/1122912733/ Part 6 pc8.2ch.net/test/read.cgi/tech/1109933426/ Part 5 pc5.2ch.net/test/read.cgi/tech/1102785854/ Part 4 pc5.2ch.net/test/read.cgi/tech/1091185216/ Part 3 pc5.2ch.net/test/read.cgi/tech/1079068715/ Part 2 f3.aaacafe.ne.jp/~null/cache/1079280501.html Part 1 pc5.2ch.net/tech/kako/1003/10036/1003674814.html
3 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 10:12:45 ] 関連スレ D言語なら俺に聞け pc11.2ch.net/test/read.cgi/tech/1108172110/ D言語を広めるスレ pc11.2ch.net/test/read.cgi/tech/1175432606/ D言語は多分コケると思っている人の数→ pc11.2ch.net/test/read.cgi/tech/1136288019/ 【次世代言語】D言語でOSを作ろう【Monaの移植?】 pc11.2ch.net/test/read.cgi/tech/1128794438/ バイナリをゲロる言語の魅力って何? pc11.2ch.net/test/read.cgi/tech/1160869311/ その他リンク 【Java/C/PHP/Perl/Ruby/Python/TeX】Eclipse M22 pc11.2ch.net/test/read.cgi/tech/1168166588/ eclipseってそんなに良いか?【エクリプス】 pc11.2ch.net/test/read.cgi/tech/1099300344/ 統合開発環境Eclipseプラグイン開発QA pc11.2ch.net/test/read.cgi/tech/1081517094/ "Code of the Nerds" Digital Mars C/C++ pc11.2ch.net/test/read.cgi/tech/1044210976/
4 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 10:13:48 ] 前々スレに貼られていたリンクなど ttp://www.digitalmars.com/download/freecompiler.html ttp://ddbg.mainia.de/ ttp://video.google.com/videoplay?docid=-7073020265668105471 ttp://d.puremagic.com/issues/ ttp://www.kmonos.net/alang/d/overview.html ttp://www.kmonos.net/alang/d/struct.html ttp://www.kmonos.net/alang/wnd/topics/winapi.ja.html ttp://www.kmonos.net/alang/wnd/topics/flectioned.ja.html ttp://www.kmonos.net/alang/wnd/topics/pitfall.ja.html#mojibake ttp://www.kmonos.net/alang/wnd/devenv.ja.html#ide ttp://shinh.skr.jp/d/bogoyaml.html ttp://www.prowiki.org/wiki4d/wiki.cgi?AllLibraries/XmlLibraries ttp://www.dsource.org/projects/mango/browser/branches/v2.1/mango/xml ttp://www.dsource.org/projects/tango/browser/trunk?rev=1236 ttp://www.dprogramming.com/entice.php ttp://www.dsource.org/projects/tango/wiki/ChapterThreading ttp://d.hatena.ne.jp/shinichiro_h/searchdiary?word=%2a%5bD%5d ttp://ja.wikipedia.org/wiki/Z%E8%A8%80%E8%AA%9E ttp://www.wikiroom.com/sakurai/index.php?FrontPage ttp://forums.codeblocks.org/index.php?board=20.0 ttp://www.google.co.jp/search?q=D%E8%A8%80%E8%AA%9E ttp://www.javaroad.jp/java_exception3.htm
5 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 11:57:14 ] 超乙
6 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:10:40 ] (tyou >> 1).otu();
7 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:13:56 ] 日本語使えたなそういえば (超>>1 )乙;
8 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:14:36 ] ドット抜けた/(^o^)\
9 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:17:37 ] 乙 ~= cast(void*)1;
10 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:23:38 ] int いちおつ; いちおつ; ^^
11 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:29:03 ] >>10 副作用のない式文は不正じゃね
12 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:37:21 ] \ ^o^ /;
13 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 16:11:00 ] オブジェクト初期化構文使えるようにならんかなあ。 var foo = new Class { bar = 1, baz = 2 };
14 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 16:37:47 ] そういうような使い方はclassじゃなくてstructでやるべきなんじゃないかと思う。 構造体リテラルがそういうようなのをサポートしてくれたらいいんだけどね。
15 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 16:57:46 ] struct X { int a; int b; int c; int d = 7;} static X x = { a:1, b:2}; // c は 0, d は 7
16 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 16:58:47 ] イニシャライザは代用にならんだろ。
17 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:11:58 ] これって国内で実際にビジネスに使われたことある? 言語の使われるか否かは、その仕様よりIDEって印象があるので気になる。
18 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:15:52 ] あるわけがない。
19 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:18:32 ] >>4 リンク集つくるなら、タイトルぐらい書け('A`)
20 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:25:10 ] 自分でやれよ
21 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:36:17 ] >>17-18 ノ なにげに使ってる
22 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:37:51 ] すいません質問です std.file.getAttributes の戻り値の意味はどこかに書いてありますか?
23 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:45:38 ] Linuxならman statでst_modeの説明のところ。 WindowsならMSDNのGetFileAttributesのところ。
24 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:56:48 ] >>23 ありがとうございます!
25 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 19:22:51 ] >>16 正直言うと、12が何に使うものなのか分からんかった。 無名構造体みたいなものだろうか
26 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 19:24:51 ] オブジェクトのリテラルみたいなもんだろう。 newと同時にプロパティを設定することができる。 C#3.0にあるらしい。
27 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 21:25:29 ] 25で言いたかったのは12じゃなくて13だった。 >>26 auto x = new class("foo", 3, "bar"){ char[] a; int n; char[] s; this(...){ foreach(int i, v; this.tupleof){ this.tupleof[i] = va_arg!(typeof(v))(_argptr); } } }; という感じのを、プロパティ名も指定可能にしたようなもの?
28 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 21:34:35 ] C#の、 var foo = new Class { bar = 1, baz = 2 }; は、Dだと Class __tmp = new Class; with(__tmp) { bar = 1; baz = 2 } auto foo = __tmp; と等価。 >>27 と等価なのはC#だと、 var x = new { a = "foo", n = 3, s = "bar" }; だね。同じ型・名前のプロパティを同じ順番で並べた匿名型は同じ型になるという優れもの。
29 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 21:46:16 ] 先に前スレ埋めようぜ。
30 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 22:22:29 ] 980を超えたスレは一定期間で勝手に落ちるよ。 なんか不都合あったっけ?
31 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 22:24:29 ] ないな
32 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 22:37:49 ] DMDなら不具合だらけですが><
33 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 05:11:44 ] 無名クラスってマイナーなのか、DIとかってこのスレ住人にはあまり普及してない?
34 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 06:08:17 ] Dに無名クラスがありませんから DIってなに?
35 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 06:09:13 ] dependency injection でしょ。>>33 は誤爆じゃないの?
36 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 06:11:00 ] うおレスはえー >>13 が無名クラスでは
37 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 07:10:21 ] ネットからD言語のコンパイラをダウンロードして解凍して環境変数にpathを通すバッチファイルです あったら楽しいなと思って趣味で作ったので、何か改良の余地があれば行ってください。 Installer of D Compilor for win2000/XP 2sen.dip.jp:81/cgi-bin/upgun/up1/source/up6740.lzh
38 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 11:43:18 ] >>36 Dにも無名クラス自体はあるからなあ。 auto x = new class{ /*クラス定義*/ };
39 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 13:30:30 ] >>37 既存のsc.iniを残す機能が欲しいような
40 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 13:44:07 ] Dの無名クラスマイナーだNE!( ^ω^)
41 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 16:14:57 ] 俺はマイナー好き
42 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 16:32:28 ] メジャー好きがここにいる時点でおかしいだろ
43 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 16:48:22 ] Java の無名クラスみたいに基底を指定することはできないの?
44 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 16:53:35 ] できるよ。マニュアル読んできな。
45 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 01:49:16 ] (new Otsu()).res(1); 前スレ>>1000 そうだといいな・・・
46 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 02:03:50 ] >>45 いやちょっと待て 世界が沈むとかどう考えても不吉な表現すぐるだろ
47 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 04:58:15 ] キン肉すぐる
48 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 11:39:10 ] >>46 そうか?
49 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 14:09:27 ] そりゃだって世界を支えるあるいは盛り上げてゆくためのツールだろ 沈めてどうするんだよw
50 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 15:07:31 ] 今更な話だけど、>>45 みたいにnew Otsu()をカッコで括らないと すぐにメンバにアクセス出来ないのは少しだけメンドイなぁ、と思う。 Javaだと不要だから余計……。C++とかC#じゃどうだっけ。
51 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 15:18:48 ] Javascriptも括弧でくくる必要ある。C++とC#も同じだったはず。 個人的にはOtsu.new()ってすべきだと思うけど、new() Otsu()が表現できなくなるしなぁ。
52 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 15:21:01 ] ありゃ、 >Javascriptも括弧でくくる必要ある。 は勘違いだったっぽ。スレ汚しスマソ。
53 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 15:32:03 ] >>50 C#は new Class().Memberでいけたと思う。 でも、視覚的に気持ち悪いから括弧つけてる。
54 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 16:02:02 ] class X{ int a = 3; static X opCall(){ return new X; } } void main(){ printf("%d\n", X().a); } これなら外側の括弧どころかnewもいらないよ!
55 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 16:32:55 ] CTFE時にassert(0);が無視されるのはバグ? (DMDv2.002)
56 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 20:01:49 ] www.kmonos.net/alang/d/expression.html > コンパイラーはassert式を全く評価しないことも許されています。 > コンパイラは、最適化やコード生成の段階で、 実行がassert(0) > の部分には到達しないことを仮定してよいものとします。 だとさ。 でもこっちではassertに引っかかるコードで > Error: assert(0) failed > Error: cannot evaluate f() at compile time って言われた。2.002。
57 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 18:04:15 ] 更新こないね 修正箇所、機能追加箇所ともに期待が たかまってしまう
58 名前:50 mailto:sage [2007/07/22(日) 19:37:55 ] >>51-54 どもども。 俺もOtsu.new()としたい派でつ。出来ればnew()以外の名前にも出来れば最高ネ。 > new() Otsu()が表現できなくなるしなぁ。 これ何のことだか全然知らないのだけど、どういう意味でしょか? 俺、なんか言語仕様見逃してる?
59 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 19:43:52 ] new(/*アロケータの引数*/) Otsu(/*コンストラクタの引数*/) という構文だから、 Otsu.new(/*コンストラクタの引数*/) とやっちゃうと、アロケータの引数は指定できなくなっちゃう、という話だと思う。
60 名前:58 mailto:sage [2007/07/22(日) 19:47:46 ] >>58 に自己レス。自己解決しました。スレ汚しすいません。 アロケータに引数なんて渡せたのね……不勉強ですた。 なるほどそう簡単にはstaticメソッドと同じ呼び出し構文に出来ないわけだ。
61 名前:58 mailto:sage [2007/07/22(日) 19:51:46 ] なんというリロードしろ俺。 >>59 ありがとです。まさにその話でした。
62 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 19:54:27 ] >俺もOtsu.new()としたい派でつ。出来ればnew()以外の名前にも出来れば最高ネ。 勝手にそう定義すればいいんじゃないの?
63 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 20:12:31 ] >>59 >Otsu.new(/*コンストラクタの引数*/) >とやっちゃうと、アロケータの引数は指定できなくなっちゃう、という話だと思う。 個人的には ObjC 風に Otsu.alloc(argForAllocator).init(argForConstructor); にすれば良いと思うのだけど。
64 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 20:15:50 ] それは、変な中間オブジェクトができるから好きじゃないなあ。
65 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 20:23:30 ] じゃあ Otsu.newWithCustomeAllocator(argAlloc, ArgConst) ならみんな納得なのかな。
66 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 20:25:16 ] Otsu.new!!(argAlloc)(argCtor) でいいよ。
67 名前:65 mailto:sage [2007/07/22(日) 20:25:48 ] 名前が長いと typo するな... そこら辺は Omni Complete で
68 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 20:30:07 ] カスタムアロケータを使うケースがそんなにあるとは思えない。 明示的にnew(allocator) Obj(construction); とすればいいだけじゃね? でなけりゃ、ファクトリクラスを作るとか。
69 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 20:40:13 ] これ何の話してんの
70 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 20:42:16 ] あまり無いケースの為に特殊な構文を付け加えるのもなんだかなあ…
71 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 22:11:44 ] >>50 ,53 そういうとき、 class C{ static class C_{ int n=3-1; } } void main(){ printf("%d\n", (new C.C_).n); } とかしたいときどうなるの? new (C.C_).n とかいう感じ?
72 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 22:16:27 ] C#はnew C()の()の省略が認められてない。 Javaは白根。
73 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 03:27:23 ] DMD 1.019
74 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 07:28:49 ] What's New for D 1.019 Jul 21, 2007 New/Changed Features Added 0x78 Codeview extension for type dchar. Added extern (System) Bugzilla 345: updated std.uni.isUniAlpha to Unicode 5.0.0 System?
75 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 07:42:58 ] > System is the same as Windows on Windows platforms, > and C on other platforms. 'System'はWindowsプラットフォームでは'Windows'と同じであり、 それ以外では'C'と同じです。 要するにプラットフォーム依存のLinkageを指定できるってことだな。
76 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 09:09:04 ] What's New for D 2.003 Jul 21, 2007 New/Changed Features * Added 0x78 Codeview extension for type dchar. * Moved next member from Object.Error to Object.Exception * Added ForeachRangeStatement * . Added extern (System) * Added std.traits * Bugzilla 345: updated std.uni.isUniAlpha to Unicode 5.0.0
77 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 11:40:01 ] 大きいのか小さいのか微妙な変化だな… 個人的には __traits よりも、デバッグ時に関数の隠し引数にでも _caller とか入れてくれたらと思う。
78 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 11:48:57 ] ええい、たった今初めてversion2系をちょっと試してみて速攻1系に戻したところだというのにw しかし何だろう、このforeach周りの不自然な強力さは。 RangeクラスとRangeリテラルを作ろうとは思わなかったんだろうか。 あと範囲を表す関係の演算子って最後を含むか含まないかで".."と"..."あたり二つ用意しないとどことなくメンドイのよね。 traitsはメタプログラミング関係か?
79 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 12:09:07 ] これは強力・・なのか?
80 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 12:44:30 ] >>77 debugブロック?内でしか使えないとか
81 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 15:59:38 ] ForeachRangeキタ━━━━━━(゚∀゚)━━━━━━ !!!!! これを待ってたんだよ。ウォルタたん大好き!
82 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 16:23:34 ] perlは、 for (0..3){print $_;} 0123なんだけど D 2.003 だと foreach (i; 0 .. 3){writef(i);} 012なのね
83 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 16:28:12 ] それは配列のスライスと一緒だな。
84 名前:77 mailto:sage [2007/07/23(月) 17:23:02 ] >>80 import std.stdio; struct Caller{ string fileName; int line; } debug void func(Caller _caller, int x){ writefln("%s(%d) : x = %d", _caller.fileName, _caller.line, x); writefln(x); } else void func(int x){ writefln(x); } void main(){ debug func(Caller(__FILE__, __LINE__), 10); else func(10); } こういうようなのを、 import std.stdio; void func(int x){ debug writefln("%s(%d) : x = %d", _caller.fileName, _caller.line, x); return x; } void main(){ func(10); } っていう風に書けたらいいなって思って。 これでは省いたけど、モジュール名とか呼び出し元の関数名とかモジュール名とか 呼び出し元の関数の_callerとかもあるとさらにいいかも? 長文で申し訳ない。
85 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 17:34:10 ] flectionedとか
86 名前:77 mailto:sage [2007/07/23(月) 18:24:49 ] flectionedって、そこまで詳細な情報って得られるの? 呼び出し元のファイル名の取り出し方とか。 軽く見聞きした程度だからどこまでできるかよくわかってないのだけど… でもまぁ、とりあえず標準でそういう機能がほしいところですね…
87 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 18:47:15 ] >>66 // Otsu.new!!(argAlloc)(argCtor) class Otsu{ template New_(aA...){ static typeof(this) New_(TaC...)(TaC aC){ return new(aA) typeof(this)(aC); } } template New(aA...){ alias New_!(aA) New; } int n; this(int n){ this.n = n; } } //任意のクラスに対応できる版 template niw_(T,aA...){ T niw_(TaC...)(TaC aC){ return new(aA) T(aC); } } template niw(T, aA...){ alias niw_!(T,aA) niw; } void main(){ printf("%d\n", Otsu.New!()(3).n); printf("%d\n", niw!(Otsu)(5).n); } とかどうだろう
88 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 20:05:49 ] ヲルターは日曜日にDつくってんのかな
89 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 20:56:51 ] __traitsのallMembersやgetMemberは列挙体にも対応してるのか。 願って止まなかった機能追加キタコレ。
90 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 21:20:17 ] なんで 1.x にはForeachRangeStatementが追加されていないんだああああああああああああああああああああああああ
91 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 21:25:45 ] あわてるな これはヲルターの罠だ
92 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:41:47 ] 更新まだー
93 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 08:27:24 ] >>87 ほおお
94 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 15:06:03 ] >>39 sc.iniが分からないから どうやればいいか分からないですけど 前回のはプロクシの部分で不味かったみたいなので修正 sakuratan.ddo.jp/uploader/source/date45550.lzh @プロクシの有無 A@が有ならプロクシ接続先の入力 B環境変数の登録 のみ確認します
95 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 15:12:51 ] まぁこんなの全然必要無いですけどね…
96 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 16:41:26 ] やっとForeachRangeStatementきたか。 .. 演算子でタプルを作れたら面白そう。 void f(int[] a ...); f(0 .. 2); // == f(0, 1) auto x = [3 .. 6]; // == [3, 4, 5] あんまり使い道なさそうだけど
97 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 17:15:44 ] >>96 template t(T...){ alias T t; } template range(int s, int e){ static if(s<e){ alias t!(s, range!(s+1,e)) range; } else{ alias t!() range; } } import std.stdio; void main(){ writefln((int x,int y){return x+y;}(range!(0,2))); // 1 writefln([range!(3,6)]); // [3,4,5] } とかテンプレートで
98 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 22:09:18 ] ['a' .. 'z'] とかなら使いようもあるかも。
99 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 22:10:02 ] と思ったが、['a' .. 'z' + 1] か。汚いな。
100 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 22:24:32 ] Ruby みたいに .. と ... の使い分けがあれば
101 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 22:50:18 ] しかし今更 .. が末尾を含むことにされても困る
102 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 23:12:39 ] +1でよくねwww
103 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 23:15:32 ] どっちかというと使い分けするほうが俺的にはめんどい だいたい..と...とか似すぎで読み違え頻発wwするかは知らないけど
104 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:28:16 ] いまどきキーワードで色分け出来ないエディタを使ってる人は なかなかいないだろうから .. と ... で色を変えりゃいい そういう問題でもないか
105 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 01:24:54 ] 直感的に反するだろうね
106 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 02:28:42 ] === がなくなって is になったときって 間違いやすいから変わったのかな rubyで .. と ... が使われているなら 使い勝手はどうかリサーチしてみればいいんじゃね
107 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 06:23:46 ] VSPluginD アップデートしてくれないかなぁ
108 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 06:25:00 ] What's New for D 1.020 Jul 23, 2007 New/Changed Features Bugs Fixed Fixed extern (System)
109 名前:デフォルトの名無しさん [2007/07/25(水) 07:52:30 ] 久々にみてみたら、更新に古いバグジラ番号のFixが結構多い気がする これはそろそろか・・・?
110 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 13:33:03 ] >>106 ruby 使ってるけど .. と ... でどっちが末尾含むのか毎回混乱してる.
111 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 14:22:20 ] >>110 .が、一つ多いのだから 含むと覚えればよい
112 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 16:10:00 ] ... は含まない方だよ。
113 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 16:47:02 ] >>110-112 おいもう結論が出たのか と思ったがDは>>111 の考えでおkというだけだな
114 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 16:51:03 ] 余計どっちがどっちかわかんなくなるがなw
115 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:12:02 ] $[a,b) とかいう表記でもあればなあ。
116 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:31:57 ] Unicode使って含む表記を a〜b にするとか 嘘
117 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 18:42:39 ] 1 to 5 とか。 予約語を増やす方向には行かなさそうだけど・・・ (というか、toは変数名に多く使われてそうだから余計可能性ないか)
118 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:31:09 ] 3項演算子 in.. の追加まだー if(n in 2..4) writefln(n);
119 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:39:14 ] between演算子か。 クエリ言語でしか見たことないけど、 assert(index in 0 .. array.length); とか書ければ便利そうだな。
120 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 20:03:29 ] 前から if (2 <= x < 4) とか書きたかったんだよ
121 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 20:17:05 ] python キタ━━━━━━(゚∀゚)━━━━━━ !!!!
122 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 23:17:54 ] ICFPの国際プログラミング・コンテストで日本のチーム「kuma-」が2位に >プログラミング言語としてはRuby,C,C++,D,Java,Perlを使用した。 Dが国際プログラミングコンテストの日本人チームで使われたとか。 メジャーになった…のか?
123 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 23:35:25 ] 検索してみたらそれ去年の記事ジャマイカ 今年のコンテストが終わったばかりだからややこしい それはそれとして去年のkuma-はk.inaba氏含めたチームなんだから メジャーになったと言われてもちょっと納得できない罠
124 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 23:39:56 ] 今年はk.inaba氏とshinh氏しか使ってないに100ガバス
125 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 23:45:13 ] 今年はrope(C++)とHaskelあたりが主力だったのかね Dは残念でした
126 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 09:40:49 ] >>118 Rangeクラス化で二項を推すぜー class Range(ValueType : Comparable){ ValueType min, max; bool opIn_r(ValueType lhs){ return (min <= value) && (value < max); } } if(n in 2..4) writefln(n);
127 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 12:15:42 ] phobosを使って作ったアプリを配布するときはソースを公開すべき? phobosのライセンスはZlibライセンスに似ていますが、GPLとは 書いてないし、LGPLと解釈すれば自分で書いたソースは公開しなくても よいような気がする
128 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 12:49:20 ] >>127 >公開 そんなことないでしょ
129 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 18:05:22 ] >>126 なんか最適化を阻害しそうじゃね? (x in a .. b) が (x >= a && x < b) や (x.opCmp(a) >= 0 && x.opCmp(b) < 0) と見なされれば十分だと思う。
130 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 17:48:45 ] みんなデバッグどうしてるの? flectioned 使えば落ちたときのスタックトレースを見ることはできるけど ブレークポイント設定してステップ実行とかしたいのに windbg は不安定すぎて使い物にならないんだけど・・・
131 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 17:57:13 ] >>130 俺はwindbgでそんなに困ったことなかった… ddbgはどう?使ったことないけど
132 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 18:38:41 ] >>130 参考にならないかもしれないけど、俺はVC++2003使ってる。 これだけで、ステップ実行、落ちたときの呼び出し履歴、リソースエディタと、 今のDに足りないものが補えてる。
133 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 18:49:35 ] >>131 thx ddbgというのもあるんだね 今度試してみるよ VS2005でうまくいけば一番いいんだけども _Dmainに関数ブレイクポイントを設定して頭からステップ実行するしかできてなくて不便 行ブレイクポイントを設定しても「このドキュメントのシンボルが読込まれていません。」と表示されて ブレークポイントが無効化されてしまう これは設定でなんとかなるのかな?
134 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 21:27:04 ] コンパイラに-opがあるのをつけてみたらどうかな あとasm{int 3;}がブレイクポイントになる。 過去スレにあった
135 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 23:02:56 ] >>132 VS がシンボル情報を認識できているってこと? どうやるんだろう >>134 -op をやるだけではダメだった シンボル情報がないから対応するソースを表示できないって怒られた asm はちゃんとブレークポイントになったよ
136 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 23:12:44 ] _Dmain に関数ブレークポイントを設定したらうまくソースとの対応を認識してくれるので map ファイルに出てくる他のシンボル名で関数ブレークポイントを設定したらどの関数でもうまくいった VS に map ファイルの内容をシンボル情報として使ってもらう方法をどなたかご存じないですか?
137 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 00:53:33 ] やっぱりリンカが PDB ファイルを出力してくれないと VS ではどうしようもない気がしてきたんですが・・・ orz オブジェクトファイルの形式が違うからなあ・・・
138 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 03:31:24 ] 何度も書き込んですまん ddbg 試してみたけど出力に多バイト文字含んでると落ちるね ddbg を実行するディレクトリ名とか・・・ ddbg は Code::Blocks をフロントエンドとして動作できるらしいからそっちに期待してみる 前スレの人は失敗に終わったようだが・・・
139 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 19:34:22 ] enum Foo : ushort { HAGE = 11, HIGE = 22, HUGE = 33, HOGE = 999, } template Bar(T) { const char[] Bar = T.stringof; } void main() { /* ちゃんとHAGE HIGE HUGE HOGEが表示される */ foreach (str; __traits(allMembers, Foo)) { printf("%.*s\n", str); } Foo foo; printf("%.*s\n", Foo.stringof); //"ushort"が表示される printf("%.*s\n", (Foo).stringof); //"ushort"が表示される printf("%.*s\n", foo.stringof); //"ushort"が表示される printf("%.*s\n", Bar!(Foo)); //"ushort"が表示される } どうすればFooという型から(コンパイル時評価可能な)文字列"Foo"を取得できるんだ?
140 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 19:59:14 ] コンパイラのバグくさい気がするのでテケトーに回避策を試した結果。 template Bar(T) {invariant Bar = (T[]).stringof[0..$-2]; } でOK
141 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 20:17:53 ] >>140 素敵な回避策だ。 トンクス!
142 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 21:45:04 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ <こいつ最高にアホ 彡、 |∪| / / __ ヽノ / (___) / ∩___∩ | ノ ヽ ! / ● ● | こいつも最高にアホ | ( _●_) ミ 彡、 |∪| / .\ / __ ヽノ / \ ...\ (___) / .│ ..│ / ヽ l..lUUU .U
143 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 23:02:35 ] うけけめけ
144 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 15:24:36 ] ばーじょんあっぷまだー?
145 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 18:26:52 ] >>129 考えてみたけど、インライン化やメンバをfinalにする、Rangeオブジェクトをスタックに置く等が行われれば、 案外いい感じに最適化されるんじゃなかろーかという気がした。 あとRangeクラスはあると実際便利なので、標準で入ってて欲しいなーという願望もあったり。 パフォーマンスを気にしてクラス作るのを敬遠しちゃって、 コードの可読性とかで大きく損をしてるケースを沢山見るのよねぇ。かなり歯がゆい気分になる。 D言語には是非とも、クラス化のリスクを徹底的に減らすような最適化を推進してもらいたいデス。 ところでForeachRangeStatementの箇所がまだ翻訳されてないんで自信無いけど、 Rangeとして書けるのは整数だけ? いくつかの演算子が適用できればオブジェクトでも行けるようにも読める気がするけど。
146 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 18:30:25 ] >>145 イテレータにも使えるとWalter氏が言ってたような…
147 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 18:45:36 ] >>145 ForeachRangeStatementは今のところスカラーな数値(整数/実数/虚数)だけ。 ただ、構造体/クラスに対応する考えはあるみたい。 news://news.digitalmars.com:119/f817uv$aqd$2@digitalmars.com
148 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 22:10:51 ] void main() { int[5] a; foreach(p; &a[0] .. &a[$-1]) writefln(p); } ポインタ型にも適用できるけど、型の大きさにかかわらず1刻みになるようだな。
149 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 14:53:19 ] Cのdmcでdll作りたいんだけど、どこで聞けばいい?
150 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 15:01:13 ] DMCスレ落ちたんか
151 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 15:14:15 ] クラウザーさん
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はダメだダメだと聞くがあまり具体的には出てこなくて まずは文字コード周りかな
253 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 19:07:14 ] みんなエディタなに使ってるの?
254 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 19:28:40 ] 個人的には入出力関係はTangoの方が好きかなぁ コンテナ(コレクション)についてもTangoがほしいね あと、ゆくゆくはTangoでXMLもいじれるようになりそう
255 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 19:31:31 ] ようやくTango1.0が出そうかなっていうときにもうD2.0だもんなぁ・・・・
256 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 19:47:39 ] D2.0ってなにそれはおいしいの? と思う俺とForeachRangeStatementが2.0だけってことはそろそろ対応お願いしますという Walterタンの無言の意思表示なのではと思う俺と…
257 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 21:09:52 ] もうv1はバグフィックスだけだろ。 美味しい機能《えさ》はv2にしか提供されない。
258 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 21:52:10 ] そもそもTangoが標準になるって発言元はどこなんだぜ?
259 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:17:02 ] >>258 Tango製作陣からじゃないの
260 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 23:43:00 ] まぁTangoのほうがモノが良いなら自然に置き換わっていくんじゃね?
261 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 00:04:50 ] どっちかが完全に上位互換ならうれしいんだけどね。 混在できたっけ?
262 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 00:23:12 ] >>261 無理じゃなかったっけ。前に似た話出てた気がする。 もともと置換を目的に作られてるしなあ。 つか本当に>>255 に同意。 なんでここで互換性ないバージョンとか出して既存ライブラリぶっちぎれるのかと。 Phobosお話になんねー、みたいな声はウォルたんに届いてないんだろうか。
263 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 00:51:04 ] ウォルタ「いや、他にやりたいことあるし…」
264 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 01:17:57 ] ウォルタ「ライブラリのためにDを止めたくないのくらいわかってくれるだろ」
265 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 01:29:21 ] ウォルタ「ライブラリが追随すればいいだろwwwww更新おせーんだよwwww」
266 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 01:41:46 ] ウォルタ「俺の勝手だろwwwwwwwwwwef9swccnj3」
267 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 01:44:39 ] 普遍条件にinvariant()って括弧がいるのはどうにかならんかなあ。 見た目が悪すぐる
268 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 08:36:17 ] >>267 気にしすぎじゃね? >>240 あたりの理由で()付じゃないとダメだという可能性は?
269 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 11:03:23 ] ウ「本来のあるべき姿を追い求めた結果だから仕方ないだろ」
270 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 11:19:19 ] まぁdmd2.0のFinal Const Invariantの導入があるから整合性のために仕方がないよ。 struct{ final {int final_hoge = 0;} const {int const_hoge = 0;} invariant{int invariant_hoge = 0;} } これでinvariantだけ定数の宣言じゃなくて不変条件になると違和感が漂いすぎるし。
271 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 12:25:29 ] unittestにあわせて、ちょっと長いけどinvarianttestとかにしてくれりゃいいのに。
272 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 19:05:21 ] ちょっとD触ってみたんだけど試してみたいことがあってサンプルコード探して動かしてみようとしたら動かない、とかデフォ? メッセージボックスに日本語出力するだけですげー時間かかって泣きそうだったわ あとみんなは開発環境何使ってるの? Eclipse+Descentでやってたらソースにエラーの赤線引いてあるけど見た目どこも問題ないしコンパイル通るし動作するしで微妙だった
273 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 19:11:49 ] >>272 D2.0系だとサンプルコードってほとんどないんじゃないかな 今公開されてるサンプルコードって大半がD1.0時代のものだと思う(しかも今のD1.0系で動くとも限らない) 少なくとも日本語の文書においては
274 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 19:22:34 ] >>272 まだまともなIDEはないから、俺は普通のテキストエディタで書いて、コマンドラインからビルドしとるよ。
275 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 19:24:11 ] 俺も>>274 と同じくコマンドライン(というかバッチファイル作ってダブルクリック) ポセイドンとかどうなんだろ?
276 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 19:47:28 ] >>273 そーなんか とりあえず1.0系インスコしたんだけどみんな2.0系使ってるの? 2.0系って正式リリースされてないよね? >>274-275 そーかー Code::BlocksとPoseidonも使ってみるよ コード補完がないとソース書いててだるい気がするしね
277 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 20:00:11 ] >>276 正式リリースなんて飾り。
278 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 20:09:37 ] >>276 バージョンが0.001増えるだけで、大幅な書き直しを余儀なくさせられる言語。それがD
279 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 20:31:15 ] バージョンアップしたらHello, woldさえコンパイル通らなくなったときは泣きそうになった
280 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 20:31:53 ] 書きまつがえた
281 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 21:54:14 ] >>276 予約語以外までまともにコード補完できるIDEなんてまだないかと >>279 これのことかな s/stdout/dout/g import std.cstream; void main() { stdout.writefln("Hello, world!"); // 古いコード } 歴史は繰り返す(Tango) Cout(Hello, world!").newline;
282 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 22:15:35 ] cout << "Hello, World!" << endl; とC++みたいに出力できるのを作ったことがあるがマニピュレータ周りでモチベーションが切れて終了
283 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 22:24:48 ] coutなんて飾りです
284 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 22:46:27 ] doutとかs(td)outとかじゃないのか
285 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 23:12:09 ] >>282 C++のストリームの記法が便利だと思ったことは一度も無いな
286 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 23:28:32 ] つかC++形式の利点って何なの? たぶんCのprintfが非型安全だから作られたんだと思うんだが、Dだと型安全な可変個引数関数が作れるわけで。
287 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 00:18:06 ] 型安全、拡張可能、フォーマット文字列の解析が不要ってとこか その代償として、寄せ、桁、精度、基数等の指定が必要な場合の 記述が面倒くさすぎ ぶっちゃけ拡張可能性という面でもstreambufが継承可能であることが 重要で、入出力演算子なんてただのオモチャだと思ってる
288 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 00:32:35 ] tangoの方間違ってたらすまん phobosのwriteflnの方がピンと来るのは俺だけ? tangoのはどうなんだこれ CoutとStdoutの使い分けとか必要なのか? string hoge = "hoge", HOGE = "HOGE"; int a = 10, b = 20; //phobos writefln(hoge, a, "[%s%d]", HOGE, b); //tango Cout(hoge)(a)("[")(HOGE)(b)("]").newline; Stdout.formatln("{}{}[{}{}]", hoge, a, HOGE, b);
289 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 05:32:21 ] Coutキタナッ
290 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 06:20:23 ] tx好きー。
291 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 06:44:43 ] Code:Blocks使ってみた 入力補完させよーとするとC++かなんかの予約語を補完してくださった Poseidon使ってみた 日本語表示もできるし予約語の補完もできるし自分で書いたメソッドの入力補完もできるっぽい ちょっと幸せ でもエディタの挙動とか配色がキモい たぶん変更できるんだろうけどまだあんまし触ってない
292 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 07:24:56 ] writefln で十分だな。
293 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 08:07:31 ] printfで十分だ
294 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 08:33:23 ] うむ C++ ライクな入出力ストリーム表記はどうにも好きになれん
295 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 09:13:18 ] 型安全であることと、色んなもんに出力できるという点は評価できるが、 printf ライクにそれを行うことも可能なわけで。
296 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 15:42:56 ] >>288 tangoはこれならstd::coutのほうがましだな
297 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 18:23:02 ] 正直、これ位の簡易な実装で俺は良いんだけどなぁ。 void main(){ println(2,' ',3,' ',4); } static import std.string,std.stdio; alias std.string.toString toString; string toString(string x){return x;} string toString(Object o){return o.toString;} //構造体とか配列とか連想配列とかも同じノリで定義 void println(T...)(T x){ foreach(v;x){ string r = toString(v); std.stdio.fwrite(r.ptr,1,r.length,std.stdio.stdout); } std.stdio.putc('\n',std.stdio.stdout); }
298 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 18:26:37 ] 結局型安全にした printf ライクなものが一番だよね。
299 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 19:43:44 ] writeflnに慣れすぎて手放せなくなってる
300 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 21:48:15 ] 誰かD1.0を擬人化してみてくれ
301 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 21:52:16 ] >>300 pc11.2ch.net/test/read.cgi/tech/1098953121/
302 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 22:08:16 ] >>297 それでprintf("%08X", n); とかはどうやりますか?
303 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 00:20:21 ] >>300 1.0限定かよ