D言語 Part28

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
プログラミング言語 D (D Programming Language) について語るスレッドです。

■前スレ
D言語 Part27
http://hibari.2ch.net/test/read.cgi/tech/1303022487/

■本家
http://www.digitalmars.com/d/
http://www.d-programming-language.org/ (ドキュメント)
http://www.kmonos.net/alang/d/ (和訳)

■コンパイラ
http://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
http://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
http://www.dsource.org/projects/ldc (LDC, バックエンドにLLVM)

■参考URL
http://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
http://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF)
http://dsource.org/ (dsource)
http://tinyurl.com/candcpp2d2 (C/C++に疲れた人のD言語2.0)
http://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語)
http://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか)
http://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座)
http://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画)
http://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games)
http://dusers.dip.jp (D言語友の会)
http://www.wish.sakura.ne.jp/desuno/game/Drawing (PrincessDrawing! D言語で作られた横スクロールSTG)
2デフォルトの名無しさん:2011/08/24(水) 07:05:17.43
3デフォルトの名無しさん:2011/08/24(水) 07:15:11.52
  D  >>1 乙 もうお前に用はない 
 く|)へ
  〉   ヽCノ
 ̄ ̄7  ヘ/
  /   ノ
  |
 /
 |
4デフォルトの名無しさん:2011/08/24(水) 13:28:18.93
>>1

PrincessDrawing!ってリンク切れてるな
5デフォルトの名無しさん:2011/08/24(水) 16:09:32.22
ディ、ディ、D言語wwwwwwwwwwwwwwww
6デフォルトの名無しさん:2011/08/24(水) 16:17:11.86
>>4
これかな
http://www.desunoya.sakura.ne.jp/product/Drawing/index.html
ソースとかはないんだな
7デフォルトの名無しさん:2011/08/24(水) 19:41:32.55
>>1

テンプレ乙

GDC は、今はこっちでメンテされているので、次回からよろしゅう
ttps://bitbucket.org/goshawk/gdc/wiki/Home
8デフォルトの名無しさん:2011/08/24(水) 20:30:53.45
ソース公開されるの待ってる
9デフォルトの名無しさん:2011/08/24(水) 23:10:05.83
ttp://ideone.com/TPiMM
仕様…なのか…?
10デフォルトの名無しさん:2011/08/24(水) 23:39:24.44
>>9
仕様でおk

これの一番下とおなじような状況
ttp://www.kmonos.net/alang/d/2.0/template-mixin.html
11デフォルトの名無しさん:2011/08/24(水) 23:53:32.03
mixinの内容は外部から守られていて、mixin側の内容の意図は保証されるわけね。
12デフォルトの名無しさん:2011/08/24(水) 23:53:38.11
なるほどなぁ

プロパティが黙って違う値を返してくるもんだから30分くらい嵌ってしまった
気をつけんと
13デフォルトの名無しさん:2011/08/25(木) 00:53:46.53
C++そこそこやったんで
More Effective C++に手を出そうとしている俺に
Dの魅力を語ってくれ
14デフォルトの名無しさん:2011/08/25(木) 01:10:47.44
>>13
違いを把握した上で
その上で有用だと思ったのなら
その時にまた来い

強いて言えば、愛だ。
他に語る事などない。
15デフォルトの名無しさん:2011/08/25(木) 01:17:02.29
>>13
ツールとして見るのではなく
プロジェクトやコミュニティに対する当事者意識を持てるかどうか
16デフォルトの名無しさん:2011/08/25(木) 01:19:33.16
んじゃC#やるとするか
17デフォルトの名無しさん:2011/08/25(木) 01:35:38.40
特に引き留める理由もないな
18デフォルトの名無しさん:2011/08/25(木) 07:58:41.76
お前ら愛がないぞw
19デフォルトの名無しさん:2011/08/25(木) 09:53:46.38
D.NETがあれば・・・あるんだっけか
20デフォルトの名無しさん:2011/08/25(木) 10:54:27.84
A言語
B言語
E言語

まだかよ
21デフォルトの名無しさん:2011/08/25(木) 11:01:54.28
Cが何の後継か調べて自由研究の題材にでもしてろ
22デフォルトの名無しさん:2011/08/25(木) 12:02:37.58
Eきむち
23デフォルトの名無しさん:2011/08/25(木) 20:08:42.45
24デフォルトの名無しさん:2011/08/25(木) 20:13:07.80
>>23
今朝「帰ったらd.y.dでmerdの記事見直そう」と思ってて
今まで忘れていたために気にかかっていたところだったありがとう
25デフォルトの名無しさん:2011/08/25(木) 23:18:39.02
>>20
当然AtoZ全部ある
26デフォルトの名無しさん:2011/08/26(金) 08:01:32.06
復活
27デフォルトの名無しさん:2011/08/26(金) 20:38:26.55
>>25
ガセ乙
28デフォルトの名無しさん:2011/08/26(金) 20:55:48.92
>>27
なぜガセと思ったのか詳しく
ガセと言いたかっただけ乙
29デフォルトの名無しさん:2011/08/26(金) 21:50:07.32
30デフォルトの名無しさん:2011/08/26(金) 21:51:40.91
HとIがない
31デフォルトの名無しさん:2011/08/26(金) 21:52:06.57
NもOも
32デフォルトの名無しさん:2011/08/26(金) 21:54:34.57
フシアナEYE
33デフォルトの名無しさん:2011/08/26(金) 22:11:40.03
C言語といえばC言語だろ
34デフォルトの名無しさん:2011/08/26(金) 22:44:36.31
公式名称でアルファベット一文字でなければいけないのかそうでないのかハッキリさせてくれないか
35デフォルトの名無しさん:2011/08/26(金) 23:41:44.47
つまらん流れだな
何回目だよ
36デフォルトの名無しさん:2011/08/27(土) 03:29:30.77
もうPythonでいいよ
37デフォルトの名無しさん:2011/08/27(土) 04:24:35.03
パイトン?
38デフォルトの名無しさん:2011/08/27(土) 06:15:29.90
pythonもrubyもllvm経由でコンパイルできるようになってるし
webgl, webclなんかも出てきてるし
dでなければならない理由がなくなってしまった
これも時代の流れか
39デフォルトの名無しさん:2011/08/27(土) 07:13:59.57
お前がどんな理由でD言語を使ってたのか謎
40デフォルトの名無しさん:2011/08/27(土) 08:33:28.46
Dをつかう理由それはそこにDがあるからだ
というかMLとかに流れてるのメールの流量がすごい
なんなのあれ…
41デフォルトの名無しさん:2011/08/27(土) 10:04:39.25
Dの最大の欠点はウォルたんが死んじゃったら終わっちゃうこと
こんなやばいもん本腰入れて使えないよ
42デフォルトの名無しさん:2011/08/27(土) 10:32:03.86
口じゃ嫌がってても体は正直
43デフォルトの名無しさん:2011/08/27(土) 13:13:52.87
うぉるたん
「俺の財宝か?欲しけりゃくれてやる・・・。
 探せ! この世の全てをそこに置いてきた!」
44デフォルトの名無しさん:2011/08/27(土) 16:16:31.25
ウォルたんマジウォルウォル
45デフォルトの名無しさん:2011/08/27(土) 19:13:11.92
Dの意思継ぐやつなんていねーよ
46デフォルトの名無しさん:2011/08/27(土) 19:20:40.92
D言語(笑)
47デフォルトの名無しさん:2011/08/27(土) 19:41:53.47
Javaはそれなりに成功というか普及したのに
Dはなんでこうなった
48デフォルトの名無しさん:2011/08/27(土) 19:48:08.21
俺が見放したから
でも次の規格ができたら戻ってくる予定
49デフォルトの名無しさん:2011/08/27(土) 21:18:20.12
えっ
50デフォルトの名無しさん:2011/08/27(土) 22:13:43.65
営利企業のものではなくて、コミュニティのものだ。
これ、メリット、だよね?ね?
51デフォルトの名無しさん:2011/08/28(日) 02:27:20.38
でも何故か開発がクローズドなんだよねw
52デフォルトの名無しさん:2011/08/28(日) 02:35:57.75
言語仕様がオープンなら可能性はゼロじゃない
53デフォルトの名無しさん:2011/08/28(日) 18:15:36.32
Oops! Internet Explorer could not find www.digitalmars.com
54デフォルトの名無しさん:2011/08/28(日) 18:23:16.47
D言語おわた?
55デフォルトの名無しさん:2011/08/28(日) 18:52:29.50
始まってもいないよ
56デフォルトの名無しさん:2011/08/28(日) 22:03:21.67
直ったな
57デフォルトの名無しさん:2011/08/28(日) 23:07:50.42
$ type test.d
import std.conv;
void main() {
 parse!int("42", 10);
 parse!int("-42", 10);
}
$ dmd -run test.d
std.conv.ConvException@std\conv.d(38): std.conv(1209): Can't convert value `-42' of type string base 10 to type int


(゚д゚)
58デフォルトの名無しさん:2011/08/29(月) 00:39:59.77
unittestからして負数考慮してねえ・・・
59デフォルトの名無しさん:2011/08/29(月) 04:31:43.83
win版の仕様です
60デフォルトの名無しさん:2011/08/29(月) 10:29:28.12
ただ勝ちあるのみ
61デフォルトの名無しさん:2011/08/29(月) 20:23:58.29
std.dateをimportして、parseとtoUTCStringとtoDateStringを使ったら、toDateStringのみタイムゾーンが違うようです。
parseやtoUTCStringと同じタイムゾーンで使うにはどうすればいいのでしょうか?

std.datetimeへの移行は、未翻訳のドキュメントを読むのがつらいので、できれば今は避けたいです・・・。
62デフォルトの名無しさん:2011/08/29(月) 21:01:16.79
でもstd.dateは消滅するんじゃないかなあ
バグだとしても修正されなさそうだし
63デフォルトの名無しさん:2011/08/29(月) 21:12:42.59
どうせ同じコードを数ヶ月先まで使おうなんて思うわけ無いしstd.date使ってもいいだろ
64デフォルトの名無しさん:2011/08/29(月) 23:19:39.54
そのりくつはおかしい
65デフォルトの名無しさん:2011/08/29(月) 23:34:37.76
30年も持つソフトを作ろうとは思わないだろう?
Dは他言語の100倍の速さで時間が流れている
そういうことだ
66デフォルトの名無しさん:2011/08/29(月) 23:57:47.07
自分は考え方を変えた
30年も面倒見れないわ
もし30年もメンテするなら
途中で誰かに引き継ぐ必要があるが
Dなんて普及しないもん誰が使いたがるんだ
67デフォルトの名無しさん:2011/08/30(火) 00:28:49.81
使いたがらせる必要性について
68デフォルトの名無しさん:2011/08/30(火) 01:16:46.24
使いたがる人間性について
69デフォルトの名無しさん:2011/08/30(火) 01:33:11.65
個性
70デフォルトの名無しさん:2011/08/30(火) 03:11:57.12
というか30年の歴史持ってる言語がCとfortranくらいしかなんじゃないか…
lisp辺りもいけるかよくわからんけど
71デフォルトの名無しさん:2011/08/30(火) 03:14:04.45
COBOL
72デフォルトの名無しさん:2011/08/30(火) 03:14:52.37
http://hibari.2ch.net/test/read.cgi/tech/1098953121/829
うむ…C意外と若かったな
73デフォルトの名無しさん:2011/08/30(火) 14:36:07.12
こんなの思いついた 引数でenum定義できたら面白そうじゃね?
void hoge(enum { a, b, c } type) {
  writeln(type);
}
hoge(type.b);
とか
74デフォルトの名無しさん:2011/08/30(火) 14:43:23.64
それ呼び出し側のカッコの中だけ
名前空間変わるの?

オーバーロード・オーバーライドも難しくなりそう

# 本音はIDEがつくりにくくなるから反対
75デフォルトの名無しさん:2011/08/30(火) 15:24:51.56
引数のtype.bはどこから出てくんのーとかな
俺も反対
76デフォルトの名無しさん:2011/08/30(火) 15:33:16.01
いっそ多相enumが入ればいい。

void hoge(enum { a, b, c } arg);
void foo(enum { c, d, e } arg);

hoge(enum.c); // {a, b, c}集合の中のcとして解釈
foo(enum.c); // {c, d, e}集合の中のcとして解釈

void bar(enum {a, b, c, d, e} arg)
{
 final switch(arg){
  case enum.a, enum.b, enum.c: hoge(arg); break; //argは{a,b,c}
  case enum.d, enum.e: foo(arg); break; //argは{d, e}
 }
}

Dに型推論は無いので所々キャストが必要になるかもしれない。
77デフォルトの名無しさん:2011/08/30(火) 17:14:03.26
void bar(enum {a, b, c, d, e} arg)
{
enum {a, b} aaa;
 switch(arg){
  case enum.a, enum.b, enum.c: hoge(arg); break; //argは{c}
  case enum.d, enum.e: foo(arg); break; //argは{d, e}
 }
}

ますます酷くなるな
78デフォルトの名無しさん:2011/08/30(火) 18:27:00.51
そんなの実装する変態言語なんてあるわけない
強いていうならどこかのDとかいう言語くらいだな
79デフォルトの名無しさん:2011/08/31(水) 04:25:42.91
D言語で作られた有名なソフトとかあんの?
80デフォルトの名無しさん:2011/08/31(水) 04:44:11.30
いりす症候群とか
81デフォルトの名無しさん:2011/08/31(水) 06:27:25.57
ecmascript+html5→アプリケーション
JavaVM|dotNet→ローカルデータ処理、OS管理
ruby|python→操作簡略化、シェルスクリプト

後は高速処理特化言語で並列化だろうな
プロセスとパイプを扱えるライブラリがあれば
シェルスクリプトの代わりもできるかもしれないけど
mainが邪魔すぎる
82デフォルトの名無しさん:2011/09/01(木) 01:20:17.47
いつの間にかKindleStoreでD言語の公式仕様書が2.99ドルで売られてるけど大丈夫なのかこれ
83デフォルトの名無しさん:2011/09/01(木) 01:25:06.26
ウォルターがキレたら仕様変更があるだけだから問題ないね
84デフォルトの名無しさん:2011/09/01(木) 01:27:01.60
TDPLじゃなくて
http://d-programming-language.org/ そのままかと思ってるけど
85デフォルトの名無しさん:2011/09/01(木) 01:30:33.00
TDPLって何?
東京ディズニープアーランド?
86デフォルトの名無しさん:2011/09/01(木) 01:38:41.22
ttp://www.walterbright.com/
ここからリンク張ってあるくらいだから本人の副収入だべ

>>85
ttp://d.hatena.ne.jp/repeatedly/20110506/1304651110
87デフォルトの名無しさん:2011/09/01(木) 01:47:19.55
The D Programming Language

ああこれね
88デフォルトの名無しさん:2011/09/01(木) 21:48:37.15
2.055まだ?
89デフォルトの名無しさん:2011/09/01(木) 23:52:22.85
>>81
ecma⊂html5
90デフォルトの名無しさん:2011/09/02(金) 00:06:15.13
ecmaはecmaだろ
jscriptだってecmaの処理系だぞってスレ違いか
91デフォルトの名無しさん:2011/09/02(金) 07:36:26.51
近い将来javascriptに変換、あるいはインタプリタ実装できてない言語は廃れると思う
windowsユーザーよりもhtml5対応ブラウザユーザーの方が多くなるだろうから
ウェブアプリを開発できない言語は先生きのこれない
92デフォルトの名無しさん:2011/09/02(金) 07:46:43.91
ブログにでも書いてろ
93デフォルトの名無しさん:2011/09/02(金) 11:51:41.61
ハハハワロス

組み込みみたいにシビアな世界ではそんなもの通用しないから
94デフォルトの名無しさん:2011/09/02(金) 12:32:34.70
出た出た「○×みたいにシビアな世界」

そのセリフを吐きながら新しいものを全く吸収できず自滅していった技術者が
過去どれだけいたっけかな。

メインフレーム以外はおもちゃと断じていた奴
ゲームは機械語プログラミングが全てと信じていた奴
etcetc
95デフォルトの名無しさん:2011/09/02(金) 14:36:10.97
みんなでD言語を普及させようぜ。
そのためのキラーアプリを作ろう。
どんどんアイディアを言ってくれ!
96デフォルトの名無しさん:2011/09/02(金) 14:37:10.14
普及しなくてもいいんじゃね派が多数
97デフォルトの名無しさん:2011/09/02(金) 15:17:22.92
それでもD言語のキラーアプリは、一つや二つくらいは必要
98デフォルトの名無しさん:2011/09/02(金) 15:18:03.47
ひさしぶりにきのこ先生みた
99デフォルトの名無しさん:2011/09/02(金) 15:19:21.88
Dでjavasriptコンパイラ作るか
100デフォルトの名無しさん:2011/09/02(金) 15:34:41.72
>>99それイイね!
101デフォルトの名無しさん:2011/09/02(金) 17:08:33.53
忘れられたDMDScript・・・
http://www.digitalmars.com/dscript/
102デフォルトの名無しさん:2011/09/02(金) 18:33:00.23
Go を思い出してしまった
あれどうなったんだろ
103デフォルトの名無しさん:2011/09/02(金) 18:55:36.22
>>101すまぬ・・・すまぬ・・・DMDScriptよ・・・。
他の考えようか。
104デフォルトの名無しさん:2011/09/02(金) 19:03:35.86
Dでプログラミングしたら
javascript吐くのとかは無理?
105デフォルトの名無しさん:2011/09/02(金) 19:22:06.05
日本語でおk
106デフォルトの名無しさん:2011/09/02(金) 19:30:34.83
D言語からJavaScriptへのトランスレータみたいなものは、有名なものは
多分まだない。
107デフォルトの名無しさん:2011/09/02(金) 19:37:08.27
>>104いまから>>106を作ろう!
108デフォルトの名無しさん:2011/09/03(土) 00:32:31.91
Webアプリケーションを作ればいいと思うよ
109デフォルトの名無しさん:2011/09/03(土) 00:37:34.13
仕様変更がまだ怖いから来年本気出す
110デフォルトの名無しさん:2011/09/03(土) 01:09:52.05
仕様変更が怖くて何でD使ってんの?
111デフォルトの名無しさん:2011/09/03(土) 01:30:14.23
将来性があるから
112デフォルトの名無しさん:2011/09/03(土) 02:42:20.53
仕様変更しない言語なんて無いだろ
CもC++もC#もObjective-CもJavaもJavascriptも何らかの形で常に仕様変更してるよ
113デフォルトの名無しさん:2011/09/03(土) 04:33:27.18
CやC++の仕様変更周期はまるで亀の一生だが、DのそれはCエレガンスの寿命みたいなもんだ。
114デフォルトの名無しさん:2011/09/04(日) 15:45:15.15
5年前に書いたDプログラムを今コンパイルしたら全部の行でエラー出るんだろ
そんな言語使えるか
115デフォルトの名無しさん:2011/09/04(日) 15:49:21.61
仕事増えていいじゃん
116デフォルトの名無しさん:2011/09/04(日) 16:04:31.69
古いバージョン使えばエラーでないよ^^
117デフォルトの名無しさん:2011/09/04(日) 16:26:12.12
全部の行は無いだろ
'}' だけの行とか絶対出ないし
総合的に見てもせいぜいエラー率150%くらいのもんだろ
118デフォルトの名無しさん:2011/09/04(日) 21:19:29.59
関数の引数に「in」って付けたとき、昔はC++で言うconst参照の意味だったと思うのだけど、今はそうなってないのはバグ?
関数の引数に「scope」って付けても何も変わらないような気がするけど、値渡しで「const scope」無意味じゃない?
119デフォルトの名無しさん:2011/09/04(日) 21:24:35.44
enum str = "a";
str = "b";
代入できちゃうな
これってバグだよね
120デフォルトの名無しさん:2011/09/04(日) 22:22:46.45
出来ないけど何言ってるの?
http://ideone.com/AjSpV
121デフォルトの名無しさん:2011/09/04(日) 22:31:49.86
そのコンパイラ一周りも古い
肩の力抜けよ。ここはDスレだぜ
122デフォルトの名無しさん:2011/09/04(日) 22:32:53.43
ideoneがランタイムエラーになっているのはlinuxだから。
windowsだと普通に代入できるよ。
そもそも、そこは「Error: constant str is not an lvalue」とコンパイルエラーになるべき。
123デフォルトの名無しさん:2011/09/08(木) 15:22:59.79
2.055
124デフォルトの名無しさん:2011/09/08(木) 15:51:47.98
キターーーーー
125デフォルトの名無しさん:2011/09/08(木) 16:04:26.57
というのはガセ
126デフォルトの名無しさん:2011/09/08(木) 16:08:01.13
ライオンとピーマンを追加してカロリー0の豆腐を考慮に入れたらしい
127デフォルトの名無しさん:2011/09/08(木) 19:38:22.26
圧倒的じゃないかdmdのバグ量は…
128デフォルトの名無しさん:2011/09/08(木) 22:00:36.32
バグを作る為に新機能を追加してるんだってば
D使いのくせにそんな事も知らないの?
129デフォルトの名無しさん:2011/09/08(木) 23:32:21.70
コンパイラやライブラリだけじゃなくユーザコードもバグらせるDさん
130デフォルトの名無しさん:2011/09/08(木) 23:37:03.05
そういう時はバージョンを戻せば大丈夫でしょw
131デフォルトの名無しさん:2011/09/09(金) 22:40:09.84
132デフォルトの名無しさん:2011/09/10(土) 01:49:26.32
itmediaとな…その時点で、D関係ねぇな…
うん関係なかったな
133デフォルトの名無しさん:2011/09/10(土) 02:20:33.13
134デフォルトの名無しさん:2011/09/10(土) 08:02:33.69
D言語はJavaやC#が後方互換性を維持してる意義がよく分かる言語だな
もはやぼくのかんがえたさいきょうのぷろぐらみんぐげんご
135デフォルトの名無しさん:2011/09/10(土) 08:37:41.65
>>133
乙なんだな

bitbucketばっかり使ってるけどgithubにもアカウント作っとこうかしらん
136デフォルトの名無しさん:2011/09/10(土) 14:45:07.68
おい2.054から2.055にしたのにoverride:がthis()にかかってるとか
どうして今までコンパイル通ってたのかわからないような部分を修正しただけで動いちまったぞ
どうなってるんだ?Dはもう終わっちまったのか?
137デフォルトの名無しさん:2011/09/10(土) 14:46:17.98
焦らしプレイか……。
138デフォルトの名無しさん:2011/09/10(土) 16:44:42.91
うひゃあ、getExt()をextension()に変えたりfnmatch()をglobMatch()に変えたりしてたら
途端に何もかも動かなくなった
びっくりするほどユートピア!
139デフォルトの名無しさん:2011/09/10(土) 18:08:47.95
俺のソース上のstd.algorithm.removeがコンパイル通らなくなったから
どこが悪いのかとunittestと比較しようとしたら
unittestからコピペしてきたのもコンパイル通らなくてワロタ
140デフォルトの名無しさん:2011/09/10(土) 18:12:19.45
まさにD!
141デフォルトの名無しさん:2011/09/10(土) 19:55:30.77
std.path の変更はただのリネームじゃなかった気がするが

・・・と思ったらレファレンスが更新されてNEEEE!
142デフォルトの名無しさん:2011/09/10(土) 20:27:51.43
unittestが仕様です は罠
143デフォルトの名無しさん:2011/09/10(土) 21:10:10.61
144デフォルトの名無しさん:2011/09/10(土) 21:42:16.19
void main(){}

2.053 => 146,972 バイト
2.054 => 149,532 バイト
2.055 => 150,556 バイト

順調にむくんでいってる
145デフォルトの名無しさん:2011/09/10(土) 21:58:32.44
そのうち150,550 byteくらいはGCなんだろうな
146デフォルトの名無しさん:2011/09/10(土) 21:58:49.27
>>139は間違いだった反省している
むしろ今までコンパイル通ってたのがおかしかった
147デフォルトの名無しさん:2011/09/10(土) 22:45:55.54
globMatch()はなにかおかしい…。たまにglobMatch内でAssersionFailure起こす。
148デフォルトの名無しさん:2011/09/10(土) 22:56:47.36
なんか053から055にバージョン上げたら文脈によってnewで落ちるようになった
またGC周りの何かの予感が
自分のバグならいいけど・・いやいくないけど
149デフォルトの名無しさん:2011/09/10(土) 23:02:01.31
>>147
'['が含まれてるパスがおかしいのは確認した

というか'['とか普通にパスに使える文字じゃないの?なんなのこの仕様
150デフォルトの名無しさん:2011/09/11(日) 00:06:28.19
第2引数何指定してる?
151デフォルトの名無しさん:2011/09/11(日) 00:38:38.06
>>149
UNIX系のシェルだと、[ABC]でAかBかCのどれか、みたいなワイルドカードが使えるものがあるんだよ。

……本当に'['を指定したい時のための記法は用意されてるんだろうか。
152デフォルトの名無しさん:2011/09/11(日) 00:46:08.96
fnmatch()には「エスケープはできません(キリッ」と書かれてのけぞったが
replace("[", "[[]")でなんとかなった
glabMatchはそれやるとassertで落ちる
153デフォルトの名無しさん:2011/09/11(日) 05:03:12.23
globMatchの第2引数では[]{}は特別な意味持ってるから開きと閉じの個数が合ってないと落ちるよ、てか落とすよ
154デフォルトの名無しさん:2011/09/11(日) 05:20:47.30
D言語のライブラリ、Tangoの次はMank(ry
155デフォルトの名無しさん:2011/09/11(日) 08:35:13.32
大人しく普通のワイルドカードで比較するか
156デフォルトの名無しさん:2011/09/11(日) 08:45:34.34
そのうち例外出すように変わるだろうね
157デフォルトの名無しさん:2011/09/11(日) 09:40:41.88
男らしく副作用が多すぎて使い物にならない関数の代表を目指してほしい
158デフォルトの名無しさん:2011/09/11(日) 09:55:54.49
strtokさんを超えてくれ
159デフォルトの名無しさん:2011/09/11(日) 17:34:05.26
ドキュメントは d-p-l のサイトだけ更新されたな
やっぱりこっちが本家なのか

日本語との照会がしづらくなるのう
160デフォルトの名無しさん:2011/09/11(日) 18:06:34.25
public auto hoge() @property { return 0; }
これがコンパイル通らないのって仕様?@2.055
public int hoge() @property { return 0; }

public auto hoge() { return 0; }
はもちろん通る
161デフォルトの名無しさん:2011/09/11(日) 18:08:59.49
std.path.getExt() -> extension() の危険な罠を回避した
手をつけるのを遅らせておいてよかった・・・
162デフォルトの名無しさん:2011/09/11(日) 18:10:02.59
@property {
public auto hoge() { return 0; }
}
でとりあえずコンパイルはできるみたい。
163デフォルトの名無しさん:2011/09/11(日) 18:14:38.02
>>161
あれどうしてあんな風になったんだろ?
164デフォルトの名無しさん:2011/09/11(日) 18:25:14.51
元の getExt() にドットが含まれない方が違和感あったから
俺はこっちがいい
165デフォルトの名無しさん:2011/09/11(日) 19:25:24.14
static if (__VERSION__ < 2055) {
std.algorithm.sort!"std.path.fcmp(a.name,b.name)<0"( list );
} else {
std.algorithm.sort!"std.path.filenameCmp(a.name,b.name)<0"( list );
}

こういうのをもっと簡単に書けないものか・・・

alias pred UZEEEEEEE
166デフォルトの名無しさん:2011/09/11(日) 20:08:22.80
何度もやるならalias使うしか
167デフォルトの名無しさん:2011/09/11(日) 20:52:58.99
std.path.rel2abs(".") -> absolutePath(".") も罠だった

カレントディレクトリ取る方法が他にあれば・・・
168デフォルトの名無しさん:2011/09/11(日) 21:24:59.46
std.file.getcwdでええんちゃう?

なんでstd.fileなのさ
169デフォルトの名無しさん:2011/09/12(月) 00:53:14.41
やっぱりあるんだね
Windowsユーザにその名前は盲点だった

そして最新のドキュメントからは消えている・・・
170デフォルトの名無しさん:2011/09/12(月) 02:11:28.75
>>168
std.file と std.path は統合してもいいんじゃ?と時々思う。
分かれてるもっともらしい理由を以前ここで見た気がするが忘れた。

ttp://ideone.com/t2Ym9
2.055のバグ(?)かと思ったけど、Ideoneの出力もなんか予想と違うような…
171デフォルトの名無しさん:2011/09/12(月) 02:56:25.22
システムコールを必要とするものしないもの、かな?妄想だけど
……だったらrel2absの意味がわからんか
172デフォルトの名無しさん:2011/09/13(火) 01:44:39.54
原因不明でnewに失敗するんだけど
core.memory.GC.disable();すると落ちなくなる、、
何これ、、、、、
173デフォルトの名無しさん:2011/09/13(火) 10:23:55.95
>>172
どっか別のオブジェクトのデストラクタが意図せぬ順番で走るパターン
とエスパーしてみる
174デフォルトの名無しさん:2011/09/13(火) 10:28:40.15
ttp://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
TIOBE 順位の躍進の理由は
C++11に注目が集まって、それと比較するためとにらんでいる

D = C++11 と混同した層とかそういうデマとかもたくさんあったに違いない
だから2〜3ヶ月もすると(ry
175デフォルトの名無しさん:2011/09/13(火) 19:32:09.37
0.2%増えたのって大きいのか小さいのか
176デフォルトの名無しさん:2011/09/13(火) 20:12:33.24
177デフォルトの名無しさん:2011/09/13(火) 21:03:17.40
数年前に何があったんだってばよ
178デフォルトの名無しさん:2011/09/13(火) 21:45:57.54
2007年正月のはver. 1.00発表
やっと正式版になったかと思ったのも懐かしい思い出
179デフォルトの名無しさん:2011/09/14(水) 02:13:15.18
>>174
単純にAndreiの入門書が出たからだよ。
大規模C++ソフトウェアデザインの著者だからネームバリューが凄い
180デフォルトの名無しさん:2011/09/14(水) 13:16:56.89
MC++Dかと
181デフォルトの名無しさん:2011/09/15(木) 00:36:33.06
ねえねえ、今のPhobosってどのくらい強力って感じなの?
182デフォルトの名無しさん:2011/09/15(木) 01:32:20.67
std.c.stdioのprintfまじ強力
183デフォルトの名無しさん:2011/09/15(木) 09:33:30.30
mapファイル出力して中身を見ると
16384バイトごとに必ず文字抜けする
このバグ、誰も報告してないんやろか・・・
184183:2011/09/15(木) 10:00:52.37
補足
OPTLINK (R) for Win32 Release 8.00.12
185デフォルトの名無しさん:2011/09/15(木) 17:48:44.11
取り合えず報告してみて
報告済みなら誰かが重複マークをつけてくれると思って書いたらいい
186デフォルトの名無しさん:2011/09/15(木) 18:04:45.48
バグがコミュニケーションの輪を広げるんだよ!!
D言語はウォルターの人間愛でできてるんだよ!!!
187デフォルトの名無しさん:2011/09/15(木) 18:09:28.85
むしろ、D言語の存在そのものがバグ
188デフォルトの名無しさん:2011/09/15(木) 18:52:07.48
189デフォルトの名無しさん:2011/09/15(木) 19:38:16.95
D言語友の会 http://dusers.dip.jp/
久しぶりに覗いたらChangelogがちゃんと日本語化されててワロタ
というか、日本語で解説見るまで toUTF16z → toUTFz になったの気づかなかった

有志には乙と言わざるを得ない
190デフォルトの名無しさん:2011/09/15(木) 19:47:51.72
toUTF16zの代替はtoUTFz!(wchar*)であることに気付かなくて一瞬阿鼻叫喚になったんだ

友の会の中の人は本当に乙だな
191デフォルトの名無しさん:2011/09/15(木) 19:54:08.98
お、DWTアプリにクラス1個追加したら-gつけた時に出るようになったOPTLINKのエラーが
もう2〜3個クラス追加したら出なくなった
192デフォルトの名無しさん:2011/09/15(木) 23:51:38.45
.NETはオワコン
193デフォルトの名無しさん:2011/09/16(金) 01:22:45.57
opDotに@propertyつけてなかったが為に起きた、segvもせずにでたらめな値を返すバグに、数時間はまってた。
しかも単純なコードだと再現しねぇ(dmd2.055win)
194デフォルトの名無しさん:2011/09/16(金) 01:56:45.22
え、詳しく
195デフォルトの名無しさん:2011/09/16(金) 06:22:39.75
Dもやろうと思えばJITコンパイラ書けるよね。
Safeモードもあるし。
196デフォルトの名無しさん:2011/09/16(金) 10:33:12.82
-safe は犠牲になったのだ・・・
197デフォルトの名無しさん:2011/09/16(金) 20:00:06.39
Phobos「-safe? -property? 何のことです?」
198デフォルトの名無しさん:2011/09/16(金) 20:06:21.46
memory safe D って -safe もろとも消えたと思ってたけど
SafeD ってのは別物なの?
199デフォルトの名無しさん:2011/09/17(土) 17:18:52.43
え?safeなくなったの?
propertyはまだあるよね?
200デフォルトの名無しさん:2011/09/17(土) 17:47:43.97
-safeは無くなったみたい
phobosさえ使わなければちゃんと機能したのになぁ…
201デフォルトの名無しさん:2011/09/17(土) 19:51:10.43
さーてOS作るか
202デフォルトの名無しさん:2011/09/17(土) 21:01:55.83
OSのバージョンアップ頻度 < 開発環境の更新頻度
203デフォルトの名無しさん:2011/09/17(土) 21:03:29.02
DのOSか
名前はDOSで決まり
204デフォルトの名無しさん:2011/09/17(土) 21:22:36.14
あ、DOSを使っててC言語を思いついたのかもね
205デフォルトの名無しさん:2011/09/17(土) 23:02:18.83
>>194 すまん。193は勘違いだった。今やったら再現しないわ。
スレよごしてごめん
206デフォルトの名無しさん:2011/09/17(土) 23:08:27.23
Dだから実は勘違いでない可能性大
207デフォルトの名無しさん:2011/09/18(日) 03:40:06.23
opDotなんて使うのか?
もはやalias thisだろ
208デフォルトの名無しさん:2011/09/18(日) 09:55:18.32
WinRTに対応したら
ネイティブ言語としてのまさかの覇権があるかもよ
209デフォルトの名無しさん:2011/09/18(日) 10:03:19.85
ではまず WinRTから SJISを排除するところから
210デフォルトの名無しさん:2011/09/18(日) 11:26:35.64
>>207
ひと手間加えるだけでECMA ScriptやLuaのような
連想配列ベースのオブジェクトが作れるという魔法の道具ですぜ。
211デフォルトの名無しさん:2011/09/18(日) 16:58:12.02
>>210
kwsk
212デフォルトの名無しさん:2011/09/18(日) 17:33:19.48
std.xmlか何かに無かったっけ?
213デフォルトの名無しさん:2011/09/18(日) 17:35:12.26
魔導書2、Dの記事だけ読みてえ
214デフォルトの名無しさん:2011/09/18(日) 18:48:11.06
記事が1つしか載らないってことはD言語は全然変態じゃないってことか…
215デフォルトの名無しさん:2011/09/18(日) 18:56:08.44
いや、Haskellとか他の言語の記事も入ってる号で単独記事だから十分変態
216デフォルトの名無しさん:2011/09/18(日) 22:02:25.15
phobosの中のような、たとえば
sizediff_t indexOf(char1, char2)(const(char1)[] s, const(char2)[] sub )
のような、
関数名(型名)(引数){}の様な構文ってどのような解釈をしたらいいんですか?
関数名(引数){}な構文しか知らないんで、どう読んで良いのか良く判りません。
217デフォルトの名無しさん:2011/09/18(日) 22:14:19.98
218デフォルトの名無しさん:2011/09/19(月) 02:30:26.73
テンプレートパラメータです
219デフォルトの名無しさん:2011/09/19(月) 02:31:30.43
opDotってまだ使い道あったのか
220デフォルトの名無しさん:2011/09/20(火) 02:32:18.02
immutableはsharedのひとつ?
221デフォルトの名無しさん:2011/09/20(火) 07:13:22.23
immutableはすべてのスレッドから等しく参照してよいと定められているけど、
コンパイラがどこまでsharedとの一貫性を保ってくれるかは不明。
shared関係はなんというかまだ整理されきっていない感じ。
222デフォルトの名無しさん:2011/09/21(水) 15:18:23.70
なぜ defineEnum が消されねばならんのだ、ぐぬぬ・・・

enum SCE_D {
COMMENT,
COMMENTLINE
}
assertEquals(std.conv.parse!SCE_D("COMMENTLINE"), SCE_D.COMMENTLINE);
----------------------------------------------------------------------
[email protected](123): COMMENT != COMMENTLINE
223222:2011/09/21(水) 15:55:58.81
Issue 4744 て コードをいじった痕跡があるのに
FIX されてないじゃん
なんぞ・・・
224デフォルトの名無しさん:2011/09/23(金) 03:50:26.96
>> 222
それコンパイル時に文字列のタプルを長さ順にソートしないといけないから
実装がえらく面倒になる。
225デフォルトの名無しさん:2011/09/23(金) 10:31:39.37
前方一致いらない
単語切り出して完全一致を比較するだけでいいはず
226デフォルトの名無しさん:2011/09/23(金) 10:52:13.80
Phobos 敗走・恐怖の神

何でこんな名前つけたし・・・
227デフォルトの名無しさん:2011/09/23(金) 10:58:40.74
木星の衛星だっけ? 火星?
228デフォルトの名無しさん:2011/09/23(金) 11:29:34.14
火星。MarsだからPhobos
純然たる恐怖の神であるDeimosよりは合ってるんじゃないかな
229デフォルトの名無しさん:2011/09/23(金) 19:58:08.29
ヴァンパイアハンターの土偶さんのイメージがつきまとう
230デフォルトの名無しさん:2011/09/23(金) 22:51:35.07
ウォルター「実は昔知ったのさ。日本でカセイというと別の意味もあるって事にね。おっとこれ以上の詮索は無しにしてくれ。」
231デフォルトの名無しさん:2011/09/24(土) 01:17:05.52
誰かDでファイアーエムブレムクローン作ってくれ
232デフォルトの名無しさん:2011/09/24(土) 01:18:04.99
231 がんばれ
233デフォルトの名無しさん:2011/09/25(日) 01:21:41.50
それよりdioだ
234デフォルトの名無しさん:2011/09/25(日) 01:46:23.19
邪悪の化身ッ!
235デフォルトの名無しさん:2011/09/25(日) 01:46:43.69
無駄無駄ぁ
236デフォルトの名無しさん:2011/09/27(火) 03:19:52.49
実数型のkeyを持つ連想配列にどのようにアクセスしたら良いのか判りません。

real[real] foo;
foo[0.12345] = 0.99; // ok
writef( "foo = %f", foo[0.12345] ); // NG

変数を介してもだめで、foreachはRenge violationでした。
もしかしてバグでしょうか?
それとも実数型のkeyはもてないのでしょうか?
237デフォルトの名無しさん:2011/09/27(火) 03:33:11.33
問題なかった@DMD2.055 Win
238デフォルトの名無しさん:2011/09/27(火) 03:42:35.94
writef だと何も出ない?けど writefln ならいけた
仕様かどうかは面倒なので調べない てかもう寝る

foreach で回すときは連想配列のプロパティを使わないとダメなはず
foreach (f; foo.keys) {
writeln(f);
writeln(foo[f]);
}
239デフォルトの名無しさん:2011/09/28(水) 20:45:36.41
interface I {}
class C : I {}

void func(Object obj) {}
func(cast(I) new C); // コンパイルエラー

interfaceのインスタンスは無条件でObjectのインスタンスと看做していいんじゃないかなぁ
それともObjectを実装してなくてintarfaceを実装してる存在なんてものがありうるの?
240デフォルトの名無しさん:2011/09/28(水) 21:03:10.91
元々interfaceはWindowsのCOM互換のための機能だったんだぜ
いつのまにかinterfaceからObjectにダウンキャストできるようになったけど、
COM由来のinterfaceでそれやったらどうなるか恐ろしいんだぜ。

Delphiも事情は一緒だけど……
241デフォルトの名無しさん:2011/09/28(水) 21:37:34.74
interface から object のダウンキャストって普通なのか…

俺はなんとなく java みたいに機能追加のための方便の一種として
しか認識してないわ > interface
242デフォルトの名無しさん:2011/09/28(水) 23:00:43.62
Javaから入ったくちだからObjectであって当たり前だと思ってた
そういうことだったのね
243デフォルトの名無しさん:2011/09/29(木) 00:14:13.96
interfaceをObjectにキャストする必要がでたら設計間違えてると考えたほうがいい
244デフォルトの名無しさん:2011/09/29(木) 19:09:13.70
するとinterfaceで型を定義することが間違ってるってことか…
そもそも大幅に性質の違うclassどもに便宜上一部共通の部分を作って
一緒くたに扱う必要がある時点でまずいのか?
mixinじゃコレクションは作れないしなぁ
Variantの配列なんて悪夢のような代物は見たくもないし
245デフォルトの名無しさん:2011/09/29(木) 20:43:40.77
「interfaceをObjectにキャストしてなんかする」の部分をそのinterfaceのメソッドにしてしまえば済む話じゃね?
246デフォルトの名無しさん:2011/09/29(木) 20:44:26.53
すまんテンパってた
>>244で書いたような事じゃObjectへのダウンキャストは発生しない

そういう状況で出てきたinterface型のオブジェクトを
DFLのControl#tag(こいつがObject型)とかにセットしようとした時に例の問題が発生するのであって
このtagは.NET由来でObjectになってるんだと思うが、こいつが本来Variantであるべきなんだ
俺が全面的に間違ってました。ごめんなさい。
だからDさん俺を破壊的変更するのはやめてください、やめて、とめ あ
247デフォルトの名無しさん:2011/09/29(木) 20:55:39.26
DFLも.NETもわからんけど、Dで実装されたinterfaceであることが確定的に明らかなら
ふつーにObjectにダウンキャストしてもいいんじゃね?
248デフォルトの名無しさん:2011/09/29(木) 21:41:38.67
アップキャストでは・・・・
249デフォルトの名無しさん:2011/09/30(金) 05:42:46.54
元の型が確定してるなら問題ないでしょ?
DFL程度のソースだったらTagを独自に置き換えちゃってもよさそうだけど
250デフォルトの名無しさん:2011/10/01(土) 13:11:33.01
DFLのgithubのforkは健在みたいだけど原作者どこいってもうたんや…
251デフォルトの名無しさん:2011/10/01(土) 18:27:54.38
interfaceをtagとして登録するなら…
252デフォルトの名無しさん:2011/10/02(日) 00:07:48.25
interfaceは基底クラスとは役割が違うよ
本当にそのコンテキストでinterfaceを使う必要があるのかよく考えてみて
253デフォルトの名無しさん:2011/10/02(日) 00:39:48.67
種類も役割も様々なclassに対して一部だけ共通の側面を持たせようとする用途だから
interfaceでいいと思うんだけどなぁ
254デフォルトの名無しさん:2011/10/02(日) 02:08:09.19
interfaceはもっと身近な存在でいてほしいね
255デフォルトの名無しさん:2011/10/02(日) 04:17:02.49
Objectの派生がいい気がしてきた
256デフォルトの名無しさん:2011/10/02(日) 04:20:29.54
それともControl#tagが専用のinterfaceを受け取るべきなのかな?
でなければVariant?
257デフォルトの名無しさん:2011/10/02(日) 08:39:17.92
>>256
専用interfaceなんかにしたら既存のクラスを置けなくなっちゃう><
いやラッパかませば置けるけど意味無いし
役割的にはVariantが妥当じゃないかな
258デフォルトの名無しさん:2011/10/02(日) 16:36:03.96
久しぶりに来たけどD言語どうなってる?
まだ破壊的仕様変更やってんの?
259デフォルトの名無しさん:2011/10/02(日) 17:02:52.31
今はそんなでもない
主要API消滅するときも0.002バージョン分ほど猶予がある
260デフォルトの名無しさん:2011/10/02(日) 18:10:56.21
標準ライブラリ内での名前被りが解消すれば
そこそこ安定するのではないだろうか・・・年明けくらい
261デフォルトの名無しさん:2011/10/02(日) 19:01:51.31
言語的な仕様はほぼ固まって、
標準ライブラリを色々いじってるところって感じでいいの?
昔いじってる時いまいちイケてないライブラリだったけど
ずいぶん変わったのかな
262デフォルトの名無しさん:2011/10/02(日) 19:10:28.76
ずいぶん変わった
ロケールとかエンコーディングとか微妙に基本的な部分が欠けてるような気もするが
基本的にはすごくいい感じ、だと思う、たぶん…

D1の頃から「他の言語よりずいぶん早くやりたい事を書けるなぁ」と思ってたんだが
そういう面ではグレードアップしてるとは実感してる
263デフォルトの名無しさん:2011/10/02(日) 19:48:44.21
ロケールとかエンコーディングとかは
やはりCJKの人間が関わらないと厳しいのだろうか
264デフォルトの名無しさん:2011/10/02(日) 20:01:58.53
D的には内部コードは全部Unicodeだからロケールとかエンコーディングとかは入出力まわりだけどうにかなればいい。
文字コード透過性だのなんだのは内部コードをUnicodeに決め打ってる時点で捨ててる。
だからsetlocaleだのmbなんたらだのは要らなくて、
「ファイルをOSのロケールからUnicodeに変換しながら読む」程度の機能さえあれば充分なはず。
265デフォルトの名無しさん:2011/10/02(日) 20:30:11.17
これも入出力の他の部分が決まらなくて足止め食らってる感が
266デフォルトの名無しさん:2011/10/02(日) 20:39:23.17
ロケールは通貨記号とか日付の書式とかにも係わってるから入出力だけじゃないけどね

いや入出力なのか?
267デフォルトの名無しさん:2011/10/02(日) 20:44:13.31
>>266
そういうのは、あっても使われないから問題ない。
日本でも数字区切りを3桁で区切るか4桁で区切るか、12/31って書くか12月31日って書くか、
頭に円記号を付けるか最後に漢字で「円」って付けるかなんてのは
ハッキリ言って用途次第アプリケーション次第であって、OSの設定を拾って切り替わったりしたら逆に迷惑な場合がほとんどだろ。
268デフォルトの名無しさん:2011/10/02(日) 20:49:38.40
そのOSの設定を拾う(「今の設定は"ja-JP"だ」とか)APIくらいあってもいいとは思うけどな
269デフォルトの名無しさん:2011/10/02(日) 22:45:42.67
実際そのあたりあまり使わないけど
年/月/日 月/日/年 日/月/年 の順番あたりは
使わなくもないかなあ
270デフォルトの名無しさん:2011/10/02(日) 22:48:12.52
>>264
メモリ上のデータのエンコーディングを変えたいって事は結構ある
入出力にも当然必要だけど、バイト配列と文字列の相互変換も必要
271デフォルトの名無しさん:2011/10/02(日) 23:11:00.27
>>270
「OSの現在のロケールのエンコーディング」と「内部コードであるUnicode」以外は
「標準ライブラリ」でやらずに、iconv(をDでラップしたライブラリ)にでも任せるべきだと思うんだ。
272デフォルトの名無しさん:2011/10/02(日) 23:15:55.10
>>270
ああ、>>271はちょっと違うな、ごめん。
toMBSzはAPIコールに特化してるけど、こいつの逐次処理やストリームからの読み書きに便利な版が必要って話だよね。
それなら賛成。
273デフォルトの名無しさん:2011/10/02(日) 23:47:12.19
内部はiconvでもその程度は標準で欲しいなあ
.NETのEncodingは便利よ
274デフォルトの名無しさん:2011/10/03(月) 01:15:11.26
ガラパゴスプラットフォームが待たれる
275デフォルトの名無しさん:2011/10/03(月) 02:05:14.38
かなり緩いBSDライセンスですら取り込まない体制なので、iconvも独自実装でないと標準には
276デフォルトの名無しさん:2011/10/03(月) 02:15:22.21
とにもかくにもdio
277デフォルトの名無しさん:2011/10/03(月) 03:13:57.16
基本はboostライセンスなんだっけ?
278デフォルトの名無しさん:2011/10/03(月) 07:49:17.83
boostライセンスだな
279デフォルトの名無しさん:2011/10/04(火) 00:09:05.29
ならiconvは厳しいか
エンコーディングの実装にOSの機能はどこまで使えるのだろうか
280デフォルトの名無しさん:2011/10/04(火) 00:33:03.90
まずOSによって対応エンコーディングに差がある、同じエンコーディングでも微妙にテーブルが違う、
Linuxなんかではlibcのロケール関数を使うことになるが言うまでもなくコイツの仕様は酷過ぎる上にBSD系と動作が違う
MacだとCoreFoundationをリンクしないといけない、Windowsだとエンコーディングを数字で指定するがこれと
他OSでLANG環境変数で指定したりするエンコーディング名と一対一対応があるわけでも勿論無い

……とまあそんな感じなので、iconvに丸投げが一番楽よ。
API自体はWindowsが一番整備されてるかな、よく言われるように変換テーブルが多少独自なのを除けば。
281デフォルトの名無しさん:2011/10/04(火) 01:31:14.64
まあ各国でよく使うエンコーディングが
自国版のOSで使えさえすればいいとは思うけど
それ抜きにしてもAPIは厳しそうだな・・・
282デフォルトの名無しさん:2011/10/04(火) 01:43:05.75
まあWindows以外は、iconvぐらいデフォルトでインストールされてるだろうってのを当て込んで
ダイナミックリンクしてもいいとは思うけど。
283デフォルトの名無しさん:2011/10/04(火) 12:55:36.47
std.encoding.EncodingSchemeから派生させて、EncodingSchemeCP932とか作ればいいのかな?
http://www.kmonos.net/alang/d/2.0/phobos/std_encoding.html
中身は、変換テーブルでやるなり、iconv呼ぶなりして
284デフォルトの名無しさん:2011/10/04(火) 16:56:35.51
>>283
俺初めてstd.encoding見たけど、dchar : 他のエンコーディングの複数バイト が常に 1 : n なのを想定されてないかこのインターフェース?
誰かウォルたんに合成文字の存在を教えてあげないと。
285デフォルトの名無しさん:2011/10/05(水) 13:47:51.03
>>101のバイナリを入れたんだけど、
VBのScriptControlからEvalしても何も帰ってこない。

ScriptControl1.Language = "DMDScript"
MsgBox ScriptControl1.Eval("1") 'Empty
MsgBox ScriptControl1.Eval("+") 'Anonymous(1) : Error: expression expected, not 'EOF'

エラーは出るからそれなりに動いてはいるようだけど、だれか助けて
286デフォルトの名無しさん:2011/10/08(土) 11:46:51.26
DLFってクレジット表示なしで商用利用可能なんだっけ?
287デフォルトの名無しさん:2011/10/08(土) 12:13:48.37
DFLか?
288デフォルトの名無しさん:2011/10/08(土) 12:54:06.05
そう
289デフォルトの名無しさん:2011/10/08(土) 14:16:46.65
3タイプのうち、普通に使う分にはzlibライセンスになると思う
表示なしでいい
290デフォルトの名無しさん:2011/10/08(土) 14:34:23.05
なるほど
それじゃDLF使おうかなあ
291デフォルトの名無しさん:2011/10/08(土) 15:31:51.26
その前にちゃんと名前を覚えてあげてください
292デフォルトの名無しさん:2011/10/08(土) 20:03:55.36
deprecateの関数置き換えたらobject.Error: Access Violationあああああああああああああ
293デフォルトの名無しさん:2011/10/08(土) 20:29:40.65
extensionがバグってた

Notice: As of Phobos 2.055, std.path.getExt has been scheduled for deprecation in February 2012. Please use extension instead.
getExtの代わりに使えってかいてあるけど動きが違ってた

void main()
{
string fname = "aaa.ext";
assert(std.path.getExt(fname) == "ext");
assert(std.path.extension(fname) == ".ext");
}

報告できる方よろしくお願いします。
それとも仕様変更だったり?
294デフォルトの名無しさん:2011/10/08(土) 20:32:43.33
>>291
ワロタ

DFLは、バグで結構やばい動作することがあるって話があったから、商用で使うなら
気をつけた方がいいぞ
295デフォルトの名無しさん:2011/10/08(土) 20:33:25.70
>> 293
これは仕様変更。
296デフォルトの名無しさん:2011/10/08(土) 20:37:33.04
>>295
やっぱり?
.NETとかも'.'ついてるし'.'ないと分割した後単純に結合できないしやっぱりそうなのかー
コードの拡張子比較してるとこ全部直さないと・・・・
297デフォルトの名無しさん:2011/10/09(日) 00:20:28.16
自分でgetExtを再実装すればいい
298デフォルトの名無しさん:2011/10/09(日) 02:19:18.44
listdirとかisabsとか自作してる俺ェ…
299デフォルトの名無しさん:2011/10/10(月) 13:11:48.66
GCCにDのフロントエンドが取り込まれるらしい

実際にGCCにコンパイラが組み込まれたら
今までみたいに自由気ままに破壊的変更できなくなるんじゃなかろうか
300デフォルトの名無しさん:2011/10/10(月) 13:18:03.43
本家が変わらず火星なら、Iainの人が血を吐きながら頑張るだけじゃねーの
利用者とフィードバック増えるとむしろスムーズに進化できる可能性も
301デフォルトの名無しさん:2011/10/10(月) 13:25:15.96
http://ideone.com/IuwjS

removeの仕様がイケてないというか、テンプレート対応がしょぼいというか・・・
302デフォルトの名無しさん:2011/10/10(月) 13:34:23.79
.NETレベルのライブラリがないと普及しないお
303デフォルトの名無しさん:2011/10/10(月) 13:40:17.44
removeはどうせ二つ用意するなら名前変えればよかったのに
304デフォルトの名無しさん:2011/10/10(月) 14:12:55.14
pythonにはそういうライブラリあるの?
305デフォルトの名無しさん:2011/10/10(月) 14:29:28.99
>>301
違うな。俺が間違ってた。ごめんよ、ごめんよ
306デフォルトの名無しさん:2011/10/13(木) 10:29:16.53
D -> Go
DMDScript -> Dart

さようならうぉるたん
307デフォルトの名無しさん:2011/10/13(木) 13:03:52.61
そうなんだ、すごいね
308デフォルトの名無しさん:2011/10/14(金) 12:17:05.74
訃報: C 言語の開発者、デニス・リッチー氏が死去
ttp://developers.slashdot.jp/story/11/10/13/0224245/

Google+ で Rob Pike 氏が語ったところによると、C 言語の開発者、K&R の R であるところの Dennis Ritchie 博士が亡くなられた。
70 歳 (Rob Pike 氏による Google+ への投稿) 。

長らく闘病中だったとのことで、先週末に自宅で息を引き取ったそうだ。
309デフォルトの名無しさん:2011/10/14(金) 15:40:28.43
この人達がBからCを作らなきゃDもなかったし他の派生言語もなかった
黎明期の偉大な人たちが次々去っていくなぁ
310デフォルトの名無しさん:2011/10/14(金) 15:59:55.43
ttp://cpplover.blogspot.com/2011/10/dart_13.html
某Dの人がDart->Dに置換しても通じるとか書いてるから読んでみたら
予想を遙かに超越してDそのまんまだった

まあDはC++も駆逐するけどな
311デフォルトの名無しさん:2011/10/14(金) 17:07:49.36
はてブのコメントにマジレスの嵐w
Dart触ってみようかな。結局Goは敬遠してしまったし。
312デフォルトの名無しさん:2011/10/14(金) 17:44:36.58
>>310
C系の記法から「常識的に考えて」導かれる記法だからねえ。
DはGCへの依存を弱めた記法を確立してbetter Cとしての立場を強めるとか
Variantを活用できるようになればなと思う。
313デフォルトの名無しさん:2011/10/15(土) 14:04:18.25
iPhoneやらUbuntuやら、巷では破壊的変更に飛び込む勇者だらけなのに

指をくわえてみているだけのD言語erは まさかいないよな?
314デフォルトの名無しさん:2011/10/15(土) 17:09:54.34
アップルが嫌いだからiPhoneには関わりません
315デフォルトの名無しさん:2011/10/15(土) 20:16:42.25
一見破壊的にみえるだけで実は既存のものを延長した結果
という場合もあって一時的に不安定になるけど山を越えると
また安定してくるという…繰り返される歴史

山が高すぎると超えられない。というのもそれなりにありそうだけども
316デフォルトの名無しさん:2011/10/15(土) 21:20:44.29
メモリ関係でバグが出ると挫折する
317デフォルトの名無しさん:2011/10/15(土) 22:06:47.85
OPTLINKのバグとは戦えない
318デフォルトの名無しさん:2011/10/15(土) 23:16:06.35
clangみたいにオープンな開発にすりゃいいのに
ウォルたん的にも別にクローズドな開発にする必要なさそうなもんだけど
せっかく発展の余地があるのにもったいない
319デフォルトの名無しさん:2011/10/17(月) 22:55:27.87
dってオープンソースじゃなかったんですか
320デフォルトの名無しさん:2011/10/17(月) 22:59:05.96
肝心なところは秘密
321デフォルトの名無しさん:2011/10/18(火) 18:31:28.75
えっ
322デフォルトの名無しさん:2011/10/19(水) 01:06:12.82
Webで使う分には実用に耐えるんですかね?
323デフォルトの名無しさん:2011/10/19(水) 22:33:35.30
規模にもよる
324デフォルトの名無しさん:2011/10/19(水) 22:38:28.33
CでWebアプリ書ける人なら楽勝
325デフォルトの名無しさん:2011/10/19(水) 23:50:24.13
だね
326デフォルトの名無しさん:2011/10/20(木) 00:11:13.61
http://ideone.com/4V7My
テンプレート関数のマングリングがおかしい件

map file の tfunc を検索すると文字化けしてるのがわかる(WinXP 32)
やっと突き止めたぜ・・・
327デフォルトの名無しさん:2011/10/20(木) 00:23:35.05
もしかしてこれでOPTLINKの謎エラーが消滅するのか
328デフォルトの名無しさん:2011/10/20(木) 01:37:23.43
>>326
見落としがあった。保存するファイル名によって再現しなくなるwww
テンプレート云々じゃなくてトータルの文字数カモシレナイ
329デフォルトの名無しさん:2011/10/20(木) 02:01:22.70
test.dで

void o123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234(){}
void main(){
略();
}

だと正常、1文字付け加えると文字化けか
正常な場合は
_D4test115o123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234FZv
で丁度128文字だしトータル文字数で確かに間違いなさそうだね
330デフォルトの名無しさん:2011/10/20(木) 02:14:16.76
連投スマソ
マングリング後の修飾名の文字数→上限128文字を超えると化けた
Windows のみかも。ideoneでは再現せず
http://ideone.com/9TWvd

長いモジュール名(std.algorithmとか)ついたテンプレート使うと
簡単に引っかかっちまう
331デフォルトの名無しさん:2011/10/20(木) 02:18:35.09
連投スマソ と書いたけど先越されたw まあいいや
バグ報告しとく
332デフォルトの名無しさん:2011/10/20(木) 03:59:19.24
http://d.puremagic.com/issues/show_bug.cgi?id=6831
直せオラ! で押し通せばよかった・・・つかれた
333デフォルトの名無しさん:2011/10/20(木) 10:57:51.06
>>332
速攻でコメが来てる
・optlinkを直さないと対応できない
・linkerを書き直す計画はあるけどいつになるかわからん

やっぱりoptlinkは切らないとダメだな
334デフォルトの名無しさん:2011/10/20(木) 19:02:40.75
C/C++のプログラムをソースのみで配布するのは
社会に対する罪だと気づいた
335デフォルトの名無しさん:2011/10/20(木) 19:35:40.51
うん
336デフォルトの名無しさん:2011/10/20(木) 20:23:27.57
その点Dのソースならガリガリ修正する楽しみがあって抜群の社会貢献度
337デフォルトの名無しさん:2011/10/21(金) 00:00:58.48
optlinkってoptasmとなんか関係ある?
338デフォルトの名無しさん:2011/10/21(金) 15:06:13.85
ないと思う
339デフォルトの名無しさん:2011/10/22(土) 11:10:54.16
D1からD2に移行したらDLLを動的ロードして使う部分で
謎のエラーというか色々意味不明な現象が発生するんで調べてみたら、
TLSのせいで複数回DLLがロードされているせいだった
なんちゅう盲点や
340デフォルトの名無しさん:2011/10/22(土) 11:47:41.59
データ領域は徹底的にデフォTLSにする方針だからなあ
知ってればどうってことないけど、チュートリアルでなるべく周知してかないと
他言語から移行する時の軽いハマりポイントになるかもね

スレッド大量に作るような方向へ向かおうとするんだと、
将来的にTLSでの静的初期化はもっと書きづらくして気軽にやれなくなったりして
341デフォルトの名無しさん:2011/10/22(土) 18:21:11.00
エラーになってくれればいいが何が起こるかわからんというのは困る
342デフォルトの名無しさん:2011/10/22(土) 18:29:20.71
そういう意味ではCとのインタフェースを残しているのがすごくマイナス

システム言語の看板を掲げるならデバッガが強力じゃないとつらいな
343デフォルトの名無しさん:2011/10/22(土) 18:55:56.49
そもそもスレッドを考慮して無いdllの造りが悪いんじゃないの?
344デフォルトの名無しさん:2011/10/22(土) 19:17:08.83
俺の為のチラ裏メモ
TLS = Thread local storage
345デフォルトの名無しさん:2011/10/22(土) 19:28:29.22
Walterは特にCライブラリをダイレクトに使えるのを大事にしてる気がするので、
避けては通れなさそうなんだよな。
Cなんて実質原始CLIみたいなもんなんだけど、デフォTLS前提としない言語外環境との連携をどう考えるか。

素のstatic thisはスレッド毎に走るのに注意、shared static thisはロックに注意、で当面しのぐしか無いがー
346デフォルトの名無しさん:2011/10/22(土) 20:27:56.44
スレッド使ったことないからその辺平気だぜ
347デフォルトの名無しさん:2011/10/26(水) 10:38:48.83
Visual Dの更新キタ
phbosでF1ヘルプ参照できるようになった

mago debugger を選んだ場合の機能が強化されてるみたいだがよくわからん
348デフォルトの名無しさん:2011/10/26(水) 21:18:01.54
特に理由はないんですが、GCJの過去問をDで解いてみようと思いました。
今日初めてD言語に触りました。
TopCoderとかのプログラミングコンテストでC++を使う場合は、
#defineを使ってforループの凡ミスを防ぐためにこんなことをします。

#define rep(i, n) for(int i=0; i<n; i++)

こうすることで以下のようなバグをなくすことができます。
for(int i=0; i<n; i++) {
  for(int j=0; j<n; i++) { // i++がバグ
    // do something
  }
}

代わりにこう書けるので、これに関してはバグがなくなります。
rep(i, n) {
  rep(j, n) {
    // do something
  }
}

D言語でも同じようなことができますか?
できないなら諦めますが、できるならその方法をご教示ください。
349デフォルトの名無しさん:2011/10/26(水) 21:28:35.26
Dにマクロはない。ので、同じことはできない。
代替の方法については、その例に限っていえばループを

foreach (i; 0..n) { // do something }

で、書けばバグを防ぐ役目は果たせるな。
もしくは
void rep(size_t rn, void delegate() dg) { foreach (0..rn) dg(); }
↑こういうのを定義しておけば
↓こう書ける。

rep(n, { // do something });
350デフォルトの名無しさん:2011/10/26(水) 22:56:40.38
C++でももうすぐforeach的なものが使えるからそれでいいじゃないか
351348:2011/10/26(水) 22:59:11.58
>349
即レスありがとうございました。
動作させることができました。
拡張性が高そうなので
foreach(i; 0..n)
を使うことにしました。
foreach(i; 1..n)
とかになっても簡単に書けそうなので。

とは言っても、もともとTangoを使っていて、それだと
foreach(i; 0..n)
がコンパイルできなかったので(found '..' when expecting ';' following 'for condition')、Phobosにコードを書き変えました。
PhobosだとWindowsでコンソールアプリを作るときに、文字化けしたと思うので、ちょっとイヤなんですが...。
352デフォルトの名無しさん:2011/10/26(水) 23:01:25.17
>>348
構文をこういう風に独自defineする人間の神経は疑うけどね
353デフォルトの名無しさん:2011/10/26(水) 23:28:04.58
tangoなんか使ってると恐い日本人コミッタのお兄さん達に睨まれるぞ
354デフォルトの名無しさん:2011/10/26(水) 23:49:54.92
にらまれてるしw
355デフォルトの名無しさん:2011/10/27(木) 07:17:55.57
dmd 1.071 and 2.056 release
356デフォルトの名無しさん:2011/10/27(木) 11:31:57.49
http://www.d-programming-language.org/intro-to-datetime.html
std.datetime の解説記事ができてた。

だれか翻訳をt(ry
357デフォルトの名無しさん:2011/10/27(木) 13:39:27.54
知ってるだろ? 法則があるのをさ……。
358デフォルトの名無しさん:2011/10/27(木) 16:45:13.81
Kには近づいてはならない!
359デフォルトの名無しさん:2011/10/27(木) 19:04:21.39
>>356
おお、簡潔な解説が出たのか!と思って行って著者名を見た時の絶望感
360デフォルトの名無しさん:2011/10/27(木) 23:43:09.19
> dmd 1.071 and 2.056 release

今回のreleaseの大きいところは
Bugzilla 3748: inoutがまともに動くようになった
Bugzilla 3659: structのopEqualsシグネチャ制限がなくなった
Bugzilla 4022 他 CTFEでAAが結構まともに動くようになった
辺りかな。
361デフォルトの名無しさん:2011/10/28(金) 00:00:52.95
AAがなんの略だかわかんなくて五分くらい真剣に悩んだけど連想配列か
362デフォルトの名無しさん:2011/10/28(金) 00:41:21.27
> 360
http://dusers.dip.jp/modules/forum/index.php?topic_id=106

もう少し細かく書いた。
363デフォルトの名無しさん:2011/10/28(金) 00:53:39.18
今回のBugFixは、Regressionのが多いね
364デフォルトの名無しさん:2011/10/28(金) 07:15:26.25
いつも乙
D2もいよいよ安定してきてしまった感が
365デフォルトの名無しさん:2011/10/28(金) 11:01:12.68
バグフィックスの数に騙されるな
新たなバグもどんどん増えているぞ
コンパイルできないたすけて
366デフォルトの名無しさん:2011/10/28(金) 13:15:23.42
落ち着いて全部のライブラリをビルドしなおすんだ
367デフォルトの名無しさん:2011/10/28(金) 13:32:44.02
GUIライブラリってある?
368デフォルトの名無しさん:2011/10/28(金) 18:54:26.37
あるよ
369デフォルトの名無しさん:2011/10/28(金) 19:01:44.43
---
do
 if (derived is base)
  return true;
while ((derived = derived.base) !is null)
return false;
---
2.055までこれがコンパイル通ってたという事実に驚愕しきり
370デフォルトの名無しさん:2011/10/28(金) 20:00:20.97
>>368
たとえば?
371デフォルトの名無しさん:2011/10/28(金) 21:09:23.72
372デフォルトの名無しさん:2011/10/28(金) 21:22:12.52
DFL,DWT(2),wxD,gtkD,QtDは去年の段階ではかろうじて生きてた
そこに載ってる他の奴は…死んでるねぇ…
373デフォルトの名無しさん:2011/10/28(金) 22:22:37.03
>>369
そういうのは結構あると思う。
メチャメチャな文法はテストしにくい。
壊そうと遊んでたらいくつか見つけたことがある
374デフォルトの名無しさん:2011/10/29(土) 03:48:19.15
DFLの非公式githubは生きてる
375デフォルトの名無しさん:2011/10/29(土) 06:58:28.32
ライブラリフルコンパイルしたら案の定通らねーwww
376デフォルトの名無しさん:2011/10/29(土) 17:32:00.40
なんの?
377デフォルトの名無しさん:2011/10/30(日) 03:46:05.26
これしき
378デフォルトの名無しさん:2011/10/31(月) 22:41:45.56
そういうのいいから
379デフォルトの名無しさん:2011/10/31(月) 23:03:33.24
base a=new const(derived);が通る?
380デフォルトの名無しさん:2011/11/01(火) 14:01:45.55
const は全くアテにならない
381デフォルトの名無しさん:2011/11/02(水) 00:39:57.71
そんなー
382デフォルトの名無しさん:2011/11/02(水) 00:56:58.89
>> 369
do { ... } while(...) の後に;が必須になったやつか。
それは確かに自分も驚いた。
383デフォルトの名無しさん:2011/11/02(水) 12:01:24.45
おー、気づかなかったw
罠にしかならないから do - until に変えてほしいわ
384デフォルトの名無しさん:2011/11/03(木) 11:27:22.63
GUIはfxlibが最低限の機能持ってて満足
385デフォルトの名無しさん:2011/11/03(木) 16:44:57.79
DWT2め、Tableにマルチバイト文字を長々と表示させて
スクロールさせまくると表示だけ固まりやがる
386デフォルトの名無しさん:2011/11/04(金) 01:15:46.11
std.socketってどう変わったの?
387デフォルトの名無しさん:2011/11/05(土) 01:31:47.86
重くなった
388デフォルトの名無しさん:2011/11/06(日) 19:24:23.17
そういえばstd.loaderってあるけどあれなんなの?
使って大丈夫なの?
389デフォルトの名無しさん:2011/11/06(日) 21:35:45.31
>>388
今見てみたら…
Windowsの部分は、Ansi系APIつかってる (Unicode文字を含んだPATHからは読み込めない)
しかもUTF-8←→Ansi変換が全くされてない (ノ∀`)アチャー
390デフォルトの名無しさん:2011/11/06(日) 23:28:02.22
これだから外人は
391デフォルトの名無しさん:2011/11/06(日) 23:51:01.39
ウォルター「え・・・」
392デフォルトの名無しさん:2011/11/07(月) 13:08:11.03
dmdでコンパイルしようとしたら、
OPTLINKのエラー(Error 42:Symbol Undefined)が大量に出てきた
visualC#を直前に入れていたので、C#アンインストールしても、
dmd入れなおしても直んないんだけど、どうすればいい?

以下エラー内容の最初の方
OPTLINK (R) for Win32 Release 8.00.12
Copyright (C) Digital Mars 1989-2010 All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
OPTLINK : Warning 23: No Stack
test.obj(test)
Error 42: Symbol Undefined _D3std5stdio4File6__dtorMFZv
test.obj(test)
Error 42: Symbol Undefined __d_local_unwind2
test.obj(test)
393デフォルトの名無しさん:2011/11/07(月) 13:10:33.20
詳細書くの忘れてた
windows7 Ultimate 64bit版で起きた現象です
394デフォルトの名無しさん:2011/11/07(月) 13:42:33.22
main() が無い
395デフォルトの名無しさん:2011/11/07(月) 16:09:19.80
>>390-391
素人以下wwwwwwwww
396392:2011/11/07(月) 17:24:59.79
main()は書いてる。
dmdをinstallerで入れなおしたらエラーが下に変わった
(エラー内容抜粋)
OPTLINK (R) for Win32 Release 8.00.12
Copyright (C) Digital Mars 1989-2010 All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
C:\D\dmd2\windows\bin\..\lib\phobos.lib(dmain2)
Error 42: Symbol Undefined _WideCharToMultiByte@32
C:\D\dmd2\windows\bin\..\lib\phobos.lib(dmain2)
Error 42: Symbol Undefined _LocalFree@4
397デフォルトの名無しさん:2011/11/07(月) 18:18:07.51
環境変数LIBがあやしい
398デフォルトの名無しさん:2011/11/07(月) 22:55:54.28
LIBってsc.iniで上書きされなかったっけ。
dmd入れ直してるならシロの気もするけど。
399デフォルトの名無しさん:2011/11/07(月) 23:50:37.62
Windows 64bit って動いてたっけ?
400デフォルトの名無しさん:2011/11/07(月) 23:53:31.18
win7 premiumだけど普通にコンパイルもリンクもexeそのものも動いてるよ
64bitのexeファイルが生成されてるわけじゃないけど
401デフォルトの名無しさん:2011/11/08(火) 00:50:13.18
コンパイルオプションで 64指定しなきゃいいのか
なるほど、思い出した
402sage:2011/11/08(火) 03:20:18.41
Windowsで生成されるコードは常に32bitコードだよ
実行したプロセスをタスクマネージャで確認すれば判る
403デフォルトの名無しさん:2011/11/08(火) 04:46:18.03
Windowsバイナリ生成に関して、 64bit版生成オプションは 存在してません。(キッパリ
404デフォルトの名無しさん:2011/11/09(水) 22:05:18.25
std.container.RedBlackTreeを使っていて、
「A以上B未満」な要素を列挙したいんですけどなんかうまい方法ありますか?
upperBoundとlowerBoundの両方を適用できたら楽だったんですが
405デフォルトの名無しさん:2011/11/10(木) 23:26:40.42
もうやだこのOPTLINK…
406デフォルトの名無しさん:2011/11/11(金) 00:57:10.96
std.containerの中身はtakeだのwalkなんとかだの!魔界か!
407デフォルトの名無しさん:2011/11/11(金) 01:37:29.92
BufferedFileにSJISテキストかませると死ぬのどうにかなりませんか・・・
408デフォルトの名無しさん:2011/11/11(金) 12:45:00.74
http://ideone.com/kdNYw

こんな感じにforeachループ内で各ループのスコープ時の変数を
それぞれdelegateに渡したいんだけど、結果が全てループの最後の
時のもので処理されてしまうのです。何か良い方法ありますか。

Javaのfinal的なものが必要?
409デフォルトの名無しさん:2011/11/11(金) 13:09:25.44
ループ変数が使い回されてるのが原因だから。
対策はこんなか http://ideone.com/AZrzo

なんか既視感あるな
410デフォルトの名無しさん:2011/11/11(金) 13:33:53.70
なるほど、bindでいけるんですね。
ありがとうございます。
411デフォルトの名無しさん:2011/11/11(金) 13:36:42.50
じゃない、引数で生成時に渡してやればいいんですね。
412デフォルトの名無しさん:2011/11/11(金) 18:22:23.63
jsでよく見るパターン
413デフォルトの名無しさん:2011/11/11(金) 21:03:39.39
JavaScriptの問題点を前向きにあげてけ

new演算子がキモい
414デフォルトの名無しさん:2011/11/11(金) 21:14:35.12
about D programing language only

javascript shit
415デフォルトの名無しさん:2011/11/11(金) 21:40:56.68
誤爆しました
416デフォルトの名無しさん:2011/11/12(土) 01:28:11.08
go back
417デフォルトの名無しさん:2011/11/12(土) 02:26:42.38
Fuck'in Javs
418デフォルトの名無しさん:2011/11/14(月) 05:36:52.67
今年後半に入ってから随分更新が静かだと思ってたけど64bit版開発してたのかよ。
しかもD1のも
普及に向けて本腰を入れ始めたか
419デフォルトの名無しさん:2011/11/14(月) 06:20:03.53
Deimosには死ぬほど期待している
420デフォルトの名無しさん:2011/11/14(月) 08:00:00.23
いや、だからioどうするんだよw
421デフォルトの名無しさん:2011/11/14(月) 10:22:58.26
>>418
その情報を知った場所を教えてくれないかい
422デフォルトの名無しさん:2011/11/14(月) 13:06:56.99
D関連ページを www.digitalmars.com から d-programming-language.org へ引越ししてるみたいだね
423デフォルトの名無しさん:2011/11/14(月) 13:11:01.81
URLのリダイレクトが設定されて
>>159 が解消される
424デフォルトの名無しさん:2011/11/14(月) 15:27:44.01
http://d-programming-language.org/new/
こっちの話か

古いサンプルコードが動かないみたいな
積もりに積もった問題を一気に直す積もりかな
425デフォルトの名無しさん:2011/11/14(月) 20:26:51.95
英語わかんない僕はどうすればいいですか><
426デフォルトの名無しさん:2011/11/14(月) 20:32:43.31
つExcite翻訳
つGoogle翻訳
427デフォルトの名無しさん:2011/11/14(月) 21:07:56.39
英語と米語とC語をまずマスターしろ
それからD語
428デフォルトの名無しさん:2011/11/14(月) 21:23:40.19
英語圏は滅ぶから日本語だけ覚えとけば問題ない
429デフォルトの名無しさん:2011/11/14(月) 22:22:33.63
つ 日本語プログラム言語「なでしこ」
430デフォルトの名無しさん:2011/11/14(月) 23:25:25.89
滅ぶとして、でも日本のほうが滅ぶの早そう
431デフォルトの名無しさん:2011/11/15(火) 09:28:26.93
全ての起源である韓国語が一番無難じゃないかな
432デフォルトの名無しさん:2011/11/17(木) 07:24:16.84
韓国が起源ニダ
433デフォルトの名無しさん:2011/11/17(木) 20:36:48.26
もうやだoptlink
別のリンカ使いたい
434デフォルトの名無しさん:2011/11/17(木) 21:29:12.10
omf に対応したリンカはなかなか無いなー

誰かOpen Watcom C でなんとかできる猛者はいないか
435デフォルトの名無しさん:2011/11/17(木) 22:59:52.71
omf捨ててcoffになって欲しい
436デフォルトの名無しさん:2011/11/17(木) 23:38:33.99
GDCいやなんでもない


結局「コンパイルが速い」(キリッ

とか言ってる裏でその辺が犠牲になってるんだよな
437デフォルトの名無しさん:2011/11/17(木) 23:40:49.60
Windowsユーザに逃げ場なし
438デフォルトの名無しさん:2011/11/18(金) 00:48:50.95
悪いことしてるわけじゃないんだ
逃げずに堂々としてればどうとでもなる
439デフォルトの名無しさん:2011/11/19(土) 08:14:04.36
堂々としてたらサービス残業代不払いでも問題ないって言うのか?
440デフォルトの名無しさん:2011/11/19(土) 10:37:04.13
おかしなことを言うやつだな
不払いで良いからサービス残業でしょう?
441デフォルトの名無しさん:2011/11/19(土) 11:29:55.78
いや、うぉるたんにギャラを出しましょうって話しだろ
442デフォルトの名無しさん:2011/11/19(土) 13:32:30.45
いまだにDigital Marsがどんな組織なのかわからん
443デフォルトの名無しさん:2011/11/19(土) 13:33:27.63
解説キボンヌ
444デフォルトの名無しさん:2011/11/19(土) 16:31:22.61
え?
445デフォルトの名無しさん:2011/11/19(土) 18:37:27.38
446デフォルトの名無しさん:2011/11/21(月) 21:27:16.82
同人サークルかなんかじゃないの?
447デフォルトの名無しさん:2011/11/21(月) 23:37:29.27
税金対策の個人企業で
たまにパッケージングのアルバイトが呼ばれる、と妄想
448デフォルトの名無しさん:2011/11/22(火) 00:49:24.40
何かつくろうよ
449デフォルトの名無しさん:2011/11/22(火) 01:13:25.28
何を作るか決まったら起こしてくれ
450デフォルトの名無しさん:2011/11/22(火) 23:25:13.20
>>449
SICPをひたすら実装
451デフォルトの名無しさん:2011/11/23(水) 00:01:32.19
新しいリンカ
452デフォルトの名無しさん:2011/11/23(水) 00:22:12.89
Dのあのマスコットがカンフーアクションするゲーム
453デフォルトの名無しさん:2011/11/23(水) 16:22:19.19
win用のリンカとデバッガを作り直して
64bit対応とともに玉砕しようぜ
454デフォルトの名無しさん:2011/11/23(水) 22:20:44.35
>>453
がんばれ
455デフォルトの名無しさん:2011/11/24(木) 21:18:31.16
lua組み込みたいんだけどはやりのバインダとかある?
環境はwin32
456デフォルトの名無しさん:2011/11/24(木) 22:09:53.24
457デフォルトの名無しさん:2011/11/24(木) 22:16:37.18
458デフォルトの名無しさん:2011/11/24(木) 23:13:55.19
意外と最近まで生きてるのな
459デフォルトの名無しさん:2011/11/24(木) 23:42:19.95
LuaDってのもあるが前に使った時は使い物にならん感じだった。
今は知らぬ。
460デフォルトの名無しさん:2011/11/25(金) 03:26:35.41
LuaLibを組みこんだ。
今のところ動いている…ぽい。
461デフォルトの名無しさん:2011/11/27(日) 13:48:11.18
今困っているという訳ではないが

DDOCの仕組みって
環境依存で出力されなくなる関数( version (Windows)とか )
をちゃんと処理できるんだっけ?
462デフォルトの名無しさん:2011/11/28(月) 02:37:03.24
やったことない
463デフォルトの名無しさん:2011/11/28(月) 03:04:36.57
eclipseにプラグインのDDTをいれてやってるんだが、急にoptlinkが出るようになったorz
それまでコンパイルできてたプロジェクトもexe吐けなくなったし
コンソールから打ってもdmdなんてないぞって怒られるし、敷居高すぎだろ・・・
464デフォルトの名無しさん:2011/11/28(月) 11:54:40.75
465デフォルトの名無しさん:2011/11/28(月) 18:03:29.34
うむ、そこは閾が高いというべきだな
466デフォルトの名無しさん:2011/11/28(月) 19:24:14.09
>急にoptlinkが出るようになったorz
optlinkが出たんじゃどうしようもねぇな…
467デフォルトの名無しさん:2011/11/28(月) 19:57:32.55
TIOBE のシェアはやはり下降トレンドだな
468デフォルトの名無しさん:2011/11/28(月) 23:37:09.23
>>463
どうしてPATHの確認とかしないの?
469デフォルトの名無しさん:2011/11/29(火) 20:40:11.27
ちょっとしたプログラムを2.055を使って作っててバイナリサイズが980kbだったんだけど
2.056に変えたら一気に2289kbになった Dってこういうものなんかー
470デフォルトの名無しさん:2011/11/29(火) 21:30:38.88
なんだなんだstd.datetimeをリンクでもしたのか
471デフォルトの名無しさん:2011/11/29(火) 23:24:49.36
changelog 2.056が見れなくなってる・・・おいおい
472デフォルトの名無しさん:2011/11/30(水) 06:25:24.80
DでWindowsのShellExtensionは作れますか?
473デフォルトの名無しさん:2011/11/30(水) 20:08:56.01
作れます
474デフォルトの名無しさん:2011/12/02(金) 00:05:47.09
おい、phobosのコミッターに坂本真綾好きがいるぞ・・・
475デフォルトの名無しさん:2011/12/02(金) 00:15:39.02
それジョナさんだよ
476デフォルトの名無しさん:2011/12/02(金) 12:05:55.54
std.datetimeってどうしてあんなに巨大になったんですか?
477デフォルトの名無しさん:2011/12/02(金) 13:26:36.94
2.056のバイナリがでかくなるのは phobosが原因なのは分かってる

std.windows.registory の *W 関数への対応
これがあやしい

>>476
機能ごとに分割してくれと散々言われてるけど押し切れないらしい
478デフォルトの名無しさん:2011/12/02(金) 17:10:14.09
よくみてないけど、あのサイズなら、汎用化して別のライブラリとして切り出せる要素があるんじゃないかな。
479デフォルトの名無しさん:2011/12/02(金) 19:33:06.42
サイズはともかくdur!"seconds"みたいな書き方が微妙…
文字列にすることになんかメリットあんの?
480デフォルトの名無しさん:2011/12/02(金) 19:48:52.22
定義する必要のない識別子(rubyで言うところのシンボル)の代わり
481デフォルトの名無しさん:2011/12/02(金) 20:48:23.64
それって完全にDDoc殺してるよね
482デフォルトの名無しさん:2011/12/02(金) 21:17:42.80
DDoc殺すってどういうことですか?
483デフォルトの名無しさん:2011/12/02(金) 21:56:13.78
DDoc殺しよりIDE殺しのが気になる
484デフォルトの名無しさん:2011/12/02(金) 22:28:29.75
DDocにそういう場合の専用の書き方つけたら
IDEがそれを使えるんじゃね?
485デフォルトの名無しさん:2011/12/02(金) 23:12:32.09
datetimeじゃなくて core.time 由来だな
alias 切るくらいすればいいのに
486デフォルトの名無しさん:2011/12/02(金) 23:17:37.95
newで確保できる最大のメモリサイズってどこで定義されてんの。
200Mほどnewしたらハングするんだけど。
487デフォルトの名無しさん:2011/12/02(金) 23:38:13.04
GC に時間がかかってるというオチでは?
488デフォルトの名無しさん:2011/12/02(金) 23:41:18.62
プロパティ使おうとしただけなのに怒られる><
http://ideone.com/M6sbF
489デフォルトの名無しさん:2011/12/02(金) 23:47:19.09
>>488
目を覚ませ ペシペシ
490デフォルトの名無しさん:2011/12/03(土) 00:49:47.07
491デフォルトの名無しさん:2011/12/03(土) 01:02:51.70
なんだMacか。どうでもいい。



・・・・あれ?!
492デフォルトの名無しさん:2011/12/03(土) 13:23:34.08
まるで日本人が書いたような英語だな
493デフォルトの名無しさん:2011/12/03(土) 14:25:26.53
範囲比較でもジャンプテーブルでもなく
全部個別で比較してんのかw
494デフォルトの名無しさん:2011/12/03(土) 15:01:09.13
Cのtemplateを嗤えない
495デフォルトの名無しさん:2011/12/03(土) 15:26:55.25
case long.min: .. case long.max:
とか書くなよ!絶対書くなよ!
496デフォルトの名無しさん:2011/12/03(土) 15:36:22.04
>>495
くらえ!
mixin(import("case_range_bomb"));
497デフォルトの名無しさん:2011/12/03(土) 15:45:52.77
>>495
弾かれるけどな
Error: had 18446744073709551615 cases which is more than 256 cases in case range
498デフォルトの名無しさん:2011/12/03(土) 16:42:33.22
phobosって-property付きでコンパイルできるようになってるの?
499デフォルトの名無しさん:2011/12/04(日) 15:56:14.95
やってないけどDなら出来ないんじゃない?
気になったんだけど@propertyって今後無印の関数を()無しで呼び出せなくなるフラグ?
500デフォルトの名無しさん:2011/12/04(日) 18:33:57.17
そうでしょ
501デフォルトの名無しさん:2011/12/04(日) 19:41:32.73
>>498 いまその作業やってる。
https://github.com/D-Programming-Language/phobos/pull/342
ためしてみるといいよ。
502デフォルトの名無しさん:2011/12/04(日) 20:50:08.62
>>501
ざっと斜め読みしてたら吹き出した
503デフォルトの名無しさん:2011/12/05(月) 01:02:11.63
えっ newするときカッコなんか書きたくない!!
504デフォルトの名無しさん:2011/12/05(月) 01:21:26.57
newは変わらんだろC++的に考えて
505デフォルトの名無しさん:2011/12/05(月) 12:41:15.80
C++は括弧の有無で結果が変わるからなあ
506デフォルトの名無しさん:2011/12/05(月) 19:24:34.67
@propertyついてるコンストラクタは見かける
でもなんというかぞっとしないな
507デフォルトの名無しさん:2011/12/05(月) 20:45:45.99
どっちだ? ぞっとする/ぞっとしない
508デフォルトの名無しさん:2011/12/05(月) 20:56:53.14
ぞっとする:恐ろしい、寒いetcぞっとしない:面白くない、つまらない、感心しない、興味・関心がわかないetc

意味がちがう。
509デフォルトの名無しさん:2011/12/05(月) 21:01:53.15
でもこういうのって「ぞっとする」がどう見ても通じない場面じゃないと通じないよね
Dは普通にぞっとさせてくるし
510デフォルトの名無しさん:2011/12/05(月) 21:05:18.09
本とかあまり読まない人には通じないのかな?
まあ、否定形なのに対称をなしてないからわかりにくいのは確かだけど。
511デフォルトの名無しさん:2011/12/05(月) 21:08:00.31
ぞっとしない の反対は ぞくっとする なのかな
512デフォルトの名無しさん:2011/12/05(月) 21:14:49.68
「鳥肌が立つ」が寒さと恐怖・嫌悪と興奮・感動の両方を表わすという問題だわな
英語でもgoose bumps, chill, terrible/terrificが寒さ・恐怖・興奮の多義語だし
日本語の歴史中でも中世の「すごし」が寒いと嫌悪と興奮の多義語。
ぞっとする、ぞくっとするも同じカテゴリだわな
513デフォルトの名無しさん:2011/12/05(月) 22:40:30.11
ここではDの言葉で話せ
514デフォルトの名無しさん:2011/12/06(火) 01:37:48.78
公式ページ更新されたっぽいけど Change Logやっぱり見れねー
なにしとん
515デフォルトの名無しさん:2011/12/06(火) 08:06:47.61
まるで、

 日本語 Part28

みたいだな。
516デフォルトの名無しさん:2011/12/07(水) 12:36:55.85
http://dblog.aldacron.net/
おまいら、俺だけのけ者にしてこっそりニュースブログ見てたな
ぜったいにゆるさない!
517デフォルトの名無しさん:2011/12/07(水) 13:53:05.52
>>516で知ったけどVisualDにC++ Conversion Wizardなんて出来てんじゃん
・・・まあ気休め程度かな
518デフォルトの名無しさん:2011/12/07(水) 20:30:41.92
数年前に作った50行くらいのプログラム修正して2.055でコンパイルしたら
本当に200KB -> 1MBになったwww
ぱねぇwww
519デフォルトの名無しさん:2011/12/07(水) 22:50:37.71
2.056はどや?
520デフォルトの名無しさん:2011/12/07(水) 22:54:21.47
2MBくらいになりそう
521デフォルトの名無しさん:2011/12/07(水) 22:58:44.08
import std.stdio;
void main() { write("Hello World.\n"); }

2.056で HelloWorld は1.04MB
522デフォルトの名無しさん:2011/12/07(水) 23:00:04.35
このサイズは一体何に使われているの?
523デフォルトの名無しさん:2011/12/07(水) 23:22:53.25
linux 32 bitで

% dmd | head -1
DMD32 D Compiler v2.056
% dmd -ofmain -O -release main.d
% strip main
% ls -lh main
-rwxrwxr-x 1 c c 189K 2011-12-07 23:19 main*

200kBくらい?
524デフォルトの名無しさん:2011/12/07(水) 23:24:46.37
stripしちゃらめえええ
525デフォルトの名無しさん:2011/12/07(水) 23:37:22.61
extern (C) void printf(in char* format, ...);
void main() { printf("Hello World.\n"); }

2.056でこれだと 154kB
phobosはかさばるなぁ
526デフォルトの名無しさん:2011/12/07(水) 23:41:27.65
Windowsバイナリcygwinでstrip出来ないんだけどみんなそう?
527デフォルトの名無しさん:2011/12/08(木) 19:14:20.57
GCついて200KBとかならまだ納得いったがさすがにこれは無いわ
528デフォルトの名無しさん:2011/12/08(木) 19:34:39.63
よくわかんないけどこれって Phobos がテンプレート使いすぎてこうなったりしてんの?
薄いテンプレートイディオムで書き直せば改善されたりしないかな。
std.datetime のコード量もカオスだし・・・。
529デフォルトの名無しさん:2011/12/08(木) 20:24:11.81
すまん>>518なんだが、2.056だったわ

少し前のレス読むと2.055→2.056で急に増えたっぽい
何があったんだろう
530デフォルトの名無しさん:2011/12/09(金) 01:11:10.66
HelloWorld1MBワロタ
Dは飽きさせないな
531デフォルトの名無しさん:2011/12/10(土) 14:15:42.16
> HelloWorld 1MB
2.054 -> 2.055 で std.uniに巨大なテーブルが追加されている。
おそらくwritelnがこれを取り込むのでexeサイズが大きくなっている
532デフォルトの名無しさん:2011/12/10(土) 14:17:27.77
>ファイルからでデータを読んでbyteの配列に格納しようとしたら、 メガバイト級のコードが読み込まれた、 という事態は避けたいものです
^^;
533デフォルトの名無しさん:2011/12/10(土) 19:42:10.71
マクロまだー?
534デフォルトの名無しさん:2011/12/12(月) 03:16:48.17
D1が消えます
535デフォルトの名無しさん:2011/12/14(水) 17:33:32.46
2.057出たね
536デフォルトの名無しさん:2011/12/14(水) 18:38:15.43
変更点。中の人は本当に乙
http://dusers.dip.jp/modules/forum/index.php?topic_id=108
537デフォルトの名無しさん:2011/12/14(水) 18:55:11.51
enumでinit出来たのか・・・
538デフォルトの名無しさん:2011/12/14(水) 18:55:22.43
例のswitchのはまだまだか
539デフォルトの名無しさん:2011/12/14(水) 18:56:20.11
単にint型のenumを作って
列挙子initをint.initで定義してるだけだな
まあ確かにできるけどw
540デフォルトの名無しさん:2011/12/14(水) 19:14:56.85
enumで思い出したけど
どうせならenumの全メンバをforeachで回させてくんないかな
valuesみたいなプロパティがあればいいんだが
541デフォルトの名無しさん:2011/12/14(水) 19:25:57.64
>> 540
std.traitsにEnumMembersがある
542デフォルトの名無しさん:2011/12/14(水) 19:42:50.78
>>541
そんなのがあったのか
thx
543デフォルトの名無しさん:2011/12/14(水) 20:51:37.93
>std.regex.replaceに破壊的変更
Yeeeeeeeeeeeeeeeeeeeeeeeeeeeeaaaaaaaahhhhhhhhhhhhhhh!!!!!!
544デフォルトの名無しさん:2011/12/14(水) 21:07:19.34
マゾが多いなw
545デフォルトの名無しさん:2011/12/14(水) 23:21:15.01
http://www.phoronix.com/scan.php?page=news_item&px=MTAyNzI
New Features Approved For Fedora 17

D2 programming language support.
546デフォルトの名無しさん:2011/12/15(木) 00:41:43.74
Change LogでBreaking changeが赤文字になってて吹いた
547デフォルトの名無しさん:2011/12/15(木) 01:31:58.13
あれ? std.intrinsic どこ行った・・・?
548デフォルトの名無しさん:2011/12/15(木) 02:44:08.62
さよならTango
549デフォルトの名無しさん:2011/12/15(木) 02:44:36.08
そろそろD2を固定してもいいんじゃないか
550デフォルトの名無しさん:2011/12/15(木) 02:56:21.67
マゾが多いな
551デフォルトの名無しさん:2011/12/15(木) 07:10:08.79
D3はまだか…
552デフォルトの名無しさん:2011/12/15(木) 11:45:55.95
>>547
モジュールとしてはすでにdeprecated, 置き換え先はcore.bitop
Documentからリンクが消えたのは、たぶん間違えて消しちゃったんじゃないかな
553デフォルトの名無しさん:2011/12/15(木) 13:02:33.06
>>552
thx
554デフォルトの名無しさん:2011/12/17(土) 18:12:09.44
WindowsAPIのHANDLEはaliasとenum、どちらがいいんだろうか
555デフォルトの名無しさん:2011/12/17(土) 21:13:17.44
intptr_t的なものがいいんじゃね?
556デフォルトの名無しさん:2011/12/17(土) 21:22:17.91
alias intptr_t HANDLE;
かな、普通に考えると
557デフォルトの名無しさん:2011/12/17(土) 21:42:50.13
配列を戻り値にする関数で最後にuniqを使いたいんだけど

int[] func() {
 int[] values;
 // ...
 return uniq(values);
}

uniqの戻り値って配列じゃないんだよな
というかrange絡みの関数は全体的にそんな感じだ
どうすればいいのやら
558デフォルトの名無しさん:2011/12/17(土) 22:53:09.06
uniq(values);
return values;
559デフォルトの名無しさん:2011/12/17(土) 23:18:30.31
だめだった
560デフォルトの名無しさん:2011/12/17(土) 23:58:46.01
std.array.array
561デフォルトの名無しさん:2011/12/18(日) 00:35:09.07
そっちか!Thx
562デフォルトの名無しさん:2011/12/19(月) 00:13:18.38
@safe pure nothrowたん・・・(*´Д`*)ハァハァ
563デフォルトの名無しさん:2011/12/19(月) 00:15:53.63
@政府 うあ 野田たん・・・(><)
564デフォルトの名無しさん:2011/12/19(月) 02:38:12.30
@trustedをつけてまわるだけの簡単なおしごと
565デフォルトの名無しさん:2011/12/19(月) 03:05:58.78
なんでAppenderはpureじゃないの
566デフォルトの名無しさん:2011/12/19(月) 22:25:57.35
throwする可能性があるからじゃ?
567デフォルトの名無しさん:2011/12/19(月) 23:39:33.94
これ1になるんだけどそういうもん?

ttp://ideone.com/WULc0

568デフォルトの名無しさん:2011/12/20(火) 00:19:15.32
aaA見たけどわかんね
569デフォルトの名無しさん:2011/12/20(火) 01:14:34.46
>>567
おてんとうさまがゆるしても
おれがゆるさねぇ
570デフォルトの名無しさん:2011/12/20(火) 02:48:56.13
あれ?pureとnothrowは直交してないのか?
571デフォルトの名無しさん:2011/12/20(火) 15:58:11.56
>>567
ある意味正しい。

> hoge["fuga"] = hoge.length
左辺の評価でまずkey="fuga"のエントリが確保され、この時点でhoge.length==1になる
その後確保されたエントリにhoge.lengthの評価結果(==1)が設定される。

*(p++) = *(p++)とかと同じようなもの
572デフォルトの名無しさん:2011/12/20(火) 16:02:41.35
>>565
GC関連の関数を内部で直接呼んでいるため。
言語としてはnew式はpure扱いだが、ランタイムのGC関数がpureであるべきかは
newsgroup上の議論でも明確な結論が出てなかったと思う。
573デフォルトの名無しさん:2011/12/20(火) 16:04:05.33
>>570
直交している。Appenderがpureでない理由は>>572の通り。
574デフォルトの名無しさん:2011/12/20(火) 20:20:35.80
>>571
なるほど納得した
575デフォルトの名無しさん:2011/12/21(水) 00:17:01.32
直感的にはhoge.set("fuga", hoge.length);みたいな評価順の方が嬉しいかな
576デフォルトの名無しさん:2011/12/21(水) 00:40:50.28
アセンブリ想像出来てれば直感的だし今のでいいと思うけど
577デフォルトの名無しさん:2011/12/21(水) 00:43:41.69
右辺で例外が起きたらと考えると、怖いな
578デフォルトの名無しさん:2011/12/21(水) 01:27:27.23
opIndexAssign( "fuga", hoge.length )
こんなオーバーロードないんだっけ?
579デフォルトの名無しさん:2011/12/21(水) 01:36:45.52
>>577
assert(笑);
580デフォルトの名無しさん:2011/12/21(水) 01:50:49.40
>>577
STLのコンテナでfront()とpop()が分かれてる理由系の話だね
http://ideone.com/rBvF3
581デフォルトの名無しさん:2011/12/21(水) 17:13:59.45
D1系のアップデート見てて思ったんだけど
CTFEできる範囲って仕様で明確化されてるの?

仕様に沿ったコンパイラでCEFEのせいで
コンパイルできる事とできない事があるってのはとても困る気がする
582デフォルトの名無しさん:2011/12/21(水) 17:17:28.83
pureなものじゃない?
今@pure付けられる範囲をどんどん広くしていってる気がする
583デフォルトの名無しさん:2011/12/22(木) 02:24:56.04
@safeならCTFEできる、ってのもあったような。
584デフォルトの名無しさん:2011/12/22(木) 13:21:42.68
ぶっちゃけ、大抵のプログラムは、C#なりPythonなりHaskellなりGoなりの高級言語を使えばよくて、
わざわざ「Cに代わる低級言語」を持ち出す必要はない

一方で、本当にC言語に取って代わろうとするなら、
高級言語を持ち出せない、プアな環境で使えないといけない

・ポインタ演算は手放せない
・GCは使えない
・ポリモーフィズムも使えない
・テンプレートも容量を食い過ぎる
・正規表現を実行時にコンパイルするのは贅沢すぎる
・標準ライブラリーが充実させても意味が無い
・標準でないアーキテクチャをサポートしなければならない

それなら、C言語で十分じゃない?

文字列型?ハッシュマップ?サードパーティ製のを使えばいい

ドキュメント自動生成なら、言語仕様を変更しなくても、Pythonとかでツールを作ればいい

Cのシンタックスがキモいとか、Lisp風マクロとかが欲しいと言うのなら、
JavaScriptに対するCoffeeScriptみたいな物を作ればいい
585デフォルトの名無しさん:2011/12/22(木) 13:26:14.29
哀れなD使い達を説得しにきたの?
586デフォルトの名無しさん:2011/12/22(木) 14:35:57.36
あちこち手を伸ばしすぎて
かつて売りにしてた機能まで潰しまくる迷走ぶりについては認める
587デフォルトの名無しさん:2011/12/22(木) 14:56:03.70
588デフォルトの名無しさん:2011/12/22(木) 16:41:48.27
複素数…
589デフォルトの名無しさん:2011/12/22(木) 22:25:33.38
typedefってなんで消えたの?
あの超シンプルに型を作れるところが気に入ってたんだけど
590デフォルトの名無しさん:2011/12/22(木) 23:06:14.50
基本的にマクロみたいな機能は無駄です
591デフォルトの名無しさん:2011/12/23(金) 09:28:03.36
それってaliasのこと?
592デフォルトの名無しさん:2011/12/23(金) 10:52:52.35
alias は便利だけど危うさが漂う
もうちっと機能を狭めてもいい
593デフォルトの名無しさん:2011/12/23(金) 11:15:18.32
>>590
そんなんじゃ「そうじゃねーよ俺は便利に使ってんだよ」と反論できちまう
せめて「typedefあるとコンパイラの実装が超大変になるんだよ、わかれよ」くらい言ってほしい
594デフォルトの名無しさん:2011/12/23(金) 11:43:45.05
strong typedefはまともにやるとめんどくさいからな。
t f(t, t)って関数があってtからuを新たに作ったときに、t f(u, t)として使えるのが正しいのか
t f(u, u)が正しいのかu f(u, u)が正しいのか。
595デフォルトの名無しさん:2011/12/23(金) 12:11:48.42
ユーザ定義リテラルがあれば
複素数をビルトイン型にしなくてもいいような気もする
(パフォーマンス的には分からんが)
596デフォルトの名無しさん:2011/12/23(金) 12:14:25.88
>>594
やっと納得した
uがどこまでtか微妙なのが仕様的に面倒なのね

あれ、でもenum…
597デフォルトの名無しさん:2011/12/23(金) 12:56:34.72
>>595
複素数がライブラリに移動したときにその話はあった
結論から言うとcomplex型とimaginary型を併用することでパフォーマンス的にも問題なく解消する
ただし記述が面倒だからユーザー定義リテラルが必須
598デフォルトの名無しさん:2011/12/23(金) 19:54:02.30
ユーザー定義リテラルを入れたいから複素数リテラルをなくしたのか?
ユーザー定義リテラルを入れなくても、複素数リテラルがあれば、複素数についてのパフォーマンスは元々解決されていたんでしょう。
なくす必要性がまだ見えないんだよね
599デフォルトの名無しさん:2011/12/23(金) 20:07:50.18
コンパイラ組みこみじゃなく、
ライブラリの存在を前提としたシンタックスシュガー化するということかと。
Dならstring→immutable char[]が似ているし、
C#のstringはSystem.Stringの別名だ(と思う)し。
600デフォルトの名無しさん:2011/12/23(金) 20:17:25.54
ユーザー定義リテラルって何ぞ・・・? ガクガクガタガタ
601デフォルトの名無しさん:2011/12/23(金) 20:19:04.64
C99が複素数を言語組み込み、C++が複素数をライブラリ提供してるけど
gccはバイナリ互換性を持たせるために、「コイツは内部的に複素数だ」ってpragma用意してるよね。

Dの複素数もC99の複素数とバイナリ互換性を持ってるはずだが、ライブラリ版はどうなってるんだろう。
602デフォルトの名無しさん:2011/12/24(土) 03:55:23.75
>>599
そうするのはなぜだか知ってますか?
ユーザー定義リテラルを導入するならば複素数だけ優遇する必要がないから?
603デフォルトの名無しさん:2011/12/25(日) 04:15:55.26
octal!100はどうするんだよ…。
octだったかな
604デフォルトの名無しさん:2011/12/25(日) 12:14:29.54
dlang.org てのがまた出来てる
こっちに移るんかな
605デフォルトの名無しさん:2011/12/25(日) 17:11:57.58
当面の間はミラーリングして様子見じゃないの
606デフォルトの名無しさん:2011/12/26(月) 01:33:27.78
const(char[])がconst(char)[]に暗黙変換されるようになったんだってな。なんか不具合出ないのかな
607デフォルトの名無しさん:2011/12/26(月) 07:19:58.60
仕様も見ずに言うけどref引数だと変換されないんだよね?
608デフォルトの名無しさん:2011/12/26(月) 20:31:46.19
ちょっと生理させてくれ

const(char)[]:中身を書き換えられない配列
const(char[]):?? Cのchar a const[] ?? いやそれじゃchar a[]と同じか
609デフォルトの名無しさん:2011/12/26(月) 23:07:10.07
const(char[]) a, b;
a = b;
が出来ないんじゃなかった?
610デフォルトの名無しさん:2011/12/26(月) 23:17:27.56
・・・えっち
611デフォルトの名無しさん:2011/12/27(火) 02:56:23.39
月桂冠
612デフォルトの名無しさん:2011/12/27(火) 08:42:56.37
厶板ではここが一番落ち着く
613デフォルトの名無しさん:2011/12/27(火) 11:50:14.46
わかるわ
俺もD言語に全く興味ないのに覗いてるしな
614デフォルトの名無しさん:2011/12/27(火) 12:05:34.60
あれ、俺がいる
615デフォルトの名無しさん:2011/12/27(火) 13:37:36.63
逃げない奴はよく訓練されたD言語erだ
616デフォルトの名無しさん:2011/12/27(火) 21:03:32.31
D言語が落ち着くまで待ち続けるぜ
617デフォルトの名無しさん:2011/12/27(火) 21:08:22.82
UFCSとラムダ式が入るらしい
まだまだ若者には負けんよ
618デフォルトの名無しさん:2011/12/27(火) 21:21:05.99
UFCSって何?
619デフォルトの名無しさん:2011/12/27(火) 21:22:04.16
Windows版64bit対応くらいしてくり
620デフォルトの名無しさん:2011/12/27(火) 21:23:30.80
Universal Fire Contol System
621デフォルトの名無しさん:2011/12/27(火) 21:47:40.01
これで敵軍も拾った武器で戦えるようになるね! っておい
622デフォルトの名無しさん:2011/12/28(水) 10:39:17.88
2.057でもHello, World1MBのまま?
623デフォルトの名無しさん:2011/12/28(水) 13:05:42.51
import std.stdio;
void main() { writeln("hello, world."); }

↑に -O -relese -inline 付けて
933404byte=911.5kbyteだった
624デフォルトの名無しさん:2011/12/28(水) 14:06:17.81
クソだな
625デフォルトの名無しさん:2011/12/28(水) 15:43:07.33
>>622
2.058から220KBに減るよ
626デフォルトの名無しさん:2011/12/28(水) 15:50:05.25
別にでかくても実害ないとは思ってるが、小さいバイナリ好きなのもちょっとわかる
627デフォルトの名無しさん:2011/12/28(水) 15:58:44.05
>>625
リリース直後にそういう話が出てたから対応済みかと思ってたわ
2.057 に移行する意欲が減退・・・冬眠でもするか
628デフォルトの名無しさん:2011/12/28(水) 16:43:49.87
サイズってそんなに重要?
配布するにしても7zとか使えば誤差みたいなもんだと思うんだけどなあ
629デフォルトの名無しさん:2011/12/28(水) 17:50:25.84
その辺はPyの文法が許せるかとか
MyClassName instance = new MyClassName();
の冗長性が許せるかとか
そういうレベルの話だと思う。
気にする人もいればそうでない人もいる。
630デフォルトの名無しさん:2011/12/28(水) 17:52:43.48
小さいプログラムだと結構嫌だな、サイズでかいの
まあそういうのはDなんか使わないでスクリプト言語でも使ってろって話なんだけど
631デフォルトの名無しさん:2011/12/28(水) 18:46:43.46
公開したり、他の人へあげるの、躊躇するよね
大した機能もないのに1MBだと、何か仕込んでるじゃないと勘ぐられそうでw
632デフォルトの名無しさん:2011/12/28(水) 23:04:03.41
upx使うと147kbまでがっつりと減った。
こっちはこっちで抵抗あるとは思うが、いちおう。

しかし900kbってなんかDelphiを思わせるサイズだ。
Dってアルファベットになんか呪いでもあるのかとw
633デフォルトの名無しさん:2011/12/28(水) 23:13:50.50
Deburin
634デフォルトの名無しさん:2011/12/28(水) 23:19:14.70
そのファイルサイズ、大きいように見えるでしょ?
でも、実際にはOSのシステムファイルと共通してる部分が多いから、実際にはそんなにサイズは食ってないんです。
635デフォルトの名無しさん:2011/12/28(水) 23:41:09.33
いや表示されてるだけサイズ食ってるだろw
ゼロパディングされてるわけでもあるまいし
636デフォルトの名無しさん:2011/12/28(水) 23:41:48.93
実際に900KB食ってるだろ
637デフォルトの名無しさん:2011/12/28(水) 23:43:30.61
これが本当のエクササイズ
638デフォルトの名無しさん:2011/12/29(木) 09:47:22.63
upx使うと減るってことは冗長な記述が多いってことか……
639デフォルトの名無しさん:2011/12/29(木) 12:49:18.74
Dは大らかな人達が開発してるんだよ
ファイルサイズくらいどうってことないよ
640デフォルトの名無しさん:2011/12/29(木) 15:14:24.01
649 デフォルトの名無しさん [sage] 2011/12/29(木) 14:50:37.28 ID: Be:
学生プログラマ日本一決定戦(予選は社会人も参加可)
ttp://codevs.jp/howto.html
現在予選開催中
応募締切 2012.1.6 12:00

おもしろいことやっているじゃん。誰か今から参加しろよ。
641デフォルトの名無しさん:2011/12/29(木) 17:12:06.58
>>640
盛り上がってないからって
あちこちで宣伝すんなよ
642デフォルトの名無しさん:2011/12/29(木) 19:03:34.97
>>635
バイナリエディタでexe見てみたら、ゼロばかり並んでるw
643デフォルトの名無しさん:2011/12/29(木) 20:32:50.15
タワーディフェンスだと・・・?
http://codevs.jp/rule.html
644デフォルトの名無しさん:2011/12/29(木) 20:40:47.22
Watch out, or you may attract a thunderbolt!!
645デフォルトの名無しさん:2011/12/29(木) 22:13:18.43
久々にJavaScriptで書いてみたが、コンパイル時型チェックがないのは面倒ではあるな
大規模プログラミングでこれは使えないだろうとは思った。
646デフォルトの名無しさん:2011/12/30(金) 12:35:56.70
だが、それがいい
647デフォルトの名無しさん:2011/12/30(金) 13:45:55.76
近頃のDはコンパイラアップデートしても割とすぐコンパイルできる代わりに
端々で以前と違う挙動をしてアプリをバグらせてくれる
これはいいものだ
648デフォルトの名無しさん:2011/12/30(金) 13:54:14.69
年内今日明日で何か作る
649デフォルトの名無しさん:2011/12/30(金) 17:31:39.90
import std.xml;
import std.stdio;
void main() {
 auto doc = new Document(new Tag("root"));
 auto e = new Element("elem");
 e.tag.attr["attr"] = `"quot"`; // '"'入りの文字列
 doc ~= e;
 writeln(std.string.join(doc.pretty(1),"\n"));
}

$ dmd -run x.d
<root>
<elem attr=""quot"" />
</root>

以前std.xmlで属性がエスケープされないって話があって、確か直ったはずなんだけど
どうして戻ってるの…
650デフォルトの名無しさん:2011/12/30(金) 18:11:03.14
std.xmlってなくなるんじゃないの?
651デフォルトの名無しさん:2011/12/30(金) 18:21:06.27
Cのlongと同じ型!みたいなエイリアスが詰まったモジュールとかありませんか?
652デフォルトの名無しさん:2011/12/30(金) 19:21:53.92
>>650
無くなるのはいいけどいつまで経っても無くならないなぁ
代替手段ができるまではちゃんとメンテしてほしす
653デフォルトの名無しさん:2011/12/30(金) 21:13:57.83
>>651
Cはプリミティブ型のバイト数決まってないから無理
654デフォルトの名無しさん:2011/12/30(金) 21:54:49.34
>>653
だからこそdmcの型と対応するaliasが欲しいって話じゃね?
655デフォルトの名無しさん:2011/12/31(土) 01:31:26.59
version か何かで分岐すれば良い
656デフォルトの名無しさん:2011/12/31(土) 01:55:24.04
それをユーザ側でいちいち用意するのは馬鹿らしいってことじゃないの?
intptr_tはあるけどな
657デフォルトの名無しさん:2011/12/31(土) 08:00:29.16
使う人いるのか、いないだろうな
他のライブラリポーティングするにしても大抵Uint8とかGLintみたいにそのライブラリ固有で型定義してるし
658デフォルトの名無しさん:2011/12/31(土) 08:35:48.82
typedef long HogeLibInteger;
D語に訳すにはどうすればいいんでしょうか
659デフォルトの名無しさん:2011/12/31(土) 09:26:42.03
alias long HogeLibInteger;
660デフォルトの名無しさん:2011/12/31(土) 15:51:22.55
typedefがオワコンになった今、今更キーワードaliasをtypedefに戻せない辺りに哀愁を感じる
661デフォルトの名無しさん:2011/12/31(土) 16:02:11.71
3.0に期待
662デフォルトの名無しさん:2011/12/31(土) 16:30:12.61
@strong alias
こんな感じで
663デフォルトの名無しさん:2011/12/31(土) 20:10:52.35
どっちでもいいけどななー
typedefに戻すメリットもたいしたものないし
664デフォルトの名無しさん:2011/12/31(土) 21:16:57.34
typedefってJavaのgotoみたいな永久欠番になるのかな
665デフォルトの名無しさん:2011/12/31(土) 21:18:15.30
3.0開発し始めたら

アンドレイ「いいこと考えた。1行で完全に新しい型を定義できる機能とか新しくね?」
ウォルたん「いいね!なぜかtypedefってキーワードが空いてるからそれ使おう」

ってなるよ
666デフォルトの名無しさん:2011/12/31(土) 21:38:40.28
typedefの代わりに、structで包めばいいかな
667デフォルトの名無しさん:2011/12/31(土) 21:55:14.94
別にstrong typedefは新しい機能でもなんでもないぞ。C言語由来の型システムとはなじまないってだけで。
668デフォルトの名無しさん:2011/12/31(土) 23:28:12.64
リファクタリング...ひらめき...実装...リリース!
669デフォルトの名無しさん:2012/01/01(日) 01:23:56.49
灰になった!
670デフォルトの名無しさん:2012/01/01(日) 04:42:41.23
代替手段ができるまではメンテして欲しいよな
671デフォルトの名無しさん:2012/01/01(日) 09:48:04.67
代替手段ができるできる詐欺である可能性もあるからな
そろそろD言語も元年を標榜してみる?
672デフォルトの名無しさん:2012/01/01(日) 20:42:49.91
-propertyへの対応で元日終わりそう
673デフォルトの名無しさん:2012/01/01(日) 21:34:04.83
あれ?

int func1() { return 1; }
@property int func2() { return 1; }

void func3(int i) { }
@property void func4(int i) { }

void main() {
 int i;
// i = func1; // -propertyだとコンパイルエラー
 i = func2;

 func3 = i; // コンパイルできる…
 func4 = i;
}

これってそういう仕様なの?
674デフォルトの名無しさん:2012/01/02(月) 05:53:20.19
Dって引数以外でref変数あるの?
675デフォルトの名無しさん:2012/01/02(月) 10:10:17.53
>>674
関数の返り値はrefにできる。
変数自体には指定できないけど、ポインタやクラスで代替可能。
676デフォルトの名無しさん:2012/01/02(月) 10:50:07.97
ありがとうございます。おとなしくポインタ使います
677デフォルトの名無しさん:2012/01/02(月) 11:24:20.97
ポインヨだろ 間違えるな
678デフォルトの名無しさん:2012/01/02(月) 14:35:37.56
ポインティーヌ
679デフォルトの名無しさん:2012/01/02(月) 18:08:52.92
>>673
https://github.com/D-Programming-Language/dmd/pull/279
パッチを出したがまだマージされていない
680デフォルトの名無しさん:2012/01/02(月) 18:17:05.66
>>649
ざっとstd.xmlのコード見てみたが、
> e.tag.attr["attr"] = `"quot"`; // '"'入りの文字列
はTagクラスのpublicなattrフィールド(連想配列)に直接値を設定しているから、
encode/decodeとか何も動かない。

つまりそんな機能は元から無い様に見える。
681デフォルトの名無しさん:2012/01/02(月) 19:20:56.52
Tagクラスの toNonEndString のところ
decodeじゃなくて、encodeにすべきなんじゃないのか?
682デフォルトの名無しさん:2012/01/02(月) 20:03:47.76
>>681
ああ、そっち(出力)の方か。確かにそこをencodeにすると、
outputがエンコードされるようになるな。

誰かbugzillaにレポート投げてくれればfixされるかも。
683デフォルトの名無しさん:2012/01/02(月) 22:54:27.85
>>679
やっぱバグなのね。ありがと

つまり次のバージョンでもう半分の-property地獄を体験することになるわけだな
これだからDはやめらんねぇ!
684デフォルトの名無しさん:2012/01/03(火) 00:42:58.19
std.xml Commentクラスのコンストラクタ内
× if (content == "-" || content.indexOf("==") != -1)
○ if (content == "-" || content.indexOf("--") != -1)
685デフォルトの名無しさん:2012/01/03(火) 05:59:45.30
おお
やっぱ消えると分かっていてもメンテしてくれないと困るな
686デフォルトの名無しさん:2012/01/03(火) 06:00:41.72
あるいはguthubで特定のソースに対するpatchを簡単に絞り込めないのかな
687デフォルトの名無しさん:2012/01/03(火) 14:21:43.58
ネスト関数に事前条件無しで事後条件書くと構文エラーになるけど、
事前条件有りで事後条件書くとコンパイル通って動くんだけど、なんか理由があるのかな?
688デフォルトの名無しさん:2012/01/03(火) 21:12:23.26
>>687
手元で試したら全部通ったけど、どんなコード書いたの?
689デフォルトの名無しさん:2012/01/03(火) 22:31:29.87
>>688

void main()
{
string foo()
//in
//{
//}
out (result)
{
assert(result.length == 0);
}
body
{
return null;
}
}

__EOF__

このままコンパイルしようとすると構文エラーで通らない。コメントアウトすると通る。
ちなみにコンパイラはDMD64(v2.057)をUbuntu向けパッケージからインストールしたもの。
690デフォルトの名無しさん:2012/01/03(火) 22:35:18.75
エラーメッセージはこんな感じ

d.d(7): found 'foo' when expecting ';' following statement
d.d(7): expression expected, not ')'
d.d(7): found 'out' when expecting ')'
d.d(8): found '{' when expecting ';' following statement
d.d(11): Declaration expected, not 'body'
d.d(14): unrecognized declaration
691デフォルトの名無しさん:2012/01/03(火) 23:08:59.74
それ多分ウォルターの自作自演だから
692デフォルトの名無しさん:2012/01/04(水) 00:21:59.25
>>689
パーザーの問題。DMDのパーザーは手書きだからこういう抜けが未だにある。
in/outなしでbodyだけ付けるのも同じようにrejectされるな。

原因は判ったのでパッチを書いておくが、bugzillaはどうする?
自分で投げてみるいいチャンスかも。
693デフォルトの名無しさん:2012/01/04(水) 00:32:34.95
ちなみにテストコードはこれ

void main()
{
size_t foo() in{} out{} body{ return 0; } // OK
size_t bar() /*in{}*/ out{} body{ return 0; } // NG1
size_t baz() /*in{} out{}*/ body{ return 0; } // NG2
}
694デフォルトの名無しさん:2012/01/04(水) 03:41:31.25
あ、仮引数の省略ってできたっけ?
695デフォルトの名無しさん:2012/01/04(水) 03:42:00.71
あと使わない実引数の省略もか
696デフォルトの名無しさん:2012/01/04(水) 09:52:43.56
>>694
仮引数の省略は不可。
一応、可変個引数で似たようなことは出来るが、余計めんどくさい・・・

>>695
デフォルト引数が設定されている引数については省略可。
697デフォルトの名無しさん:2012/01/04(水) 12:15:29.91
いやそうでなくて、変数名の省略
698デフォルトの名無しさん:2012/01/04(水) 13:06:37.84
変数名省略できる言語なんかあるのか?
699デフォルトの名無しさん:2012/01/04(水) 13:13:57.12
timerStart( 1000, (Timer,EventArgs){ doSomeThing(); } );

こういうのが書ければいいってことでしょ
700デフォルトの名無しさん:2012/01/04(水) 13:17:33.72
長い変数名を書くのが面倒で、短い変数名にしたいって事なら、alias使えばおk。
クラスや構造体の参照を簡略化したいなら、with文を使うのもあり。

型名を書くのを省略したいという事なら、残念ながらDでは出来ません。
関数オブジェクトを簡単に作りたいなら、関数リテラルを使えばおk。
型が違うだけで、処理の内容が同じ関数を書くのが嫌という話なら、テンプレートを使えばおk
701デフォルトの名無しさん:2012/01/04(水) 13:36:24.87
>>697
void foo(int, long){ ... }
みたいに、通常の関数で型だけを書いて仮引数名を省略することは可能。
これはC言語系列のsyntaxを受け継いでいる。

>>699
2.058からは関数リテラルで仮引数名の省略は出来なくなる。なぜなら
関数リテラルのパラメータ型推論・funciton/delegate推論が入ったため、

(a, b){ doSomethig(); }

で、a,bが型名か仮引数名かパース時点では判明しないため。
→2.057までは型名として、2.058以降は仮引数名として扱われるようになる

>>700
上に書いたとおり、関数リテラル限定で型名を書くのを省略できるようになる。
702デフォルトの名無しさん:2012/01/04(水) 14:02:36.29
>>701
なんで通るんだろうと思いつつ。
で、どうやって引数の値にアクセスするのよ?
http://ideone.com/6NLyf

誰だ、型名省略できるって言ったやつ。
まあ、戻り値の型は省略できるけどね。
http://ideone.com/AXEQu
703デフォルトの名無しさん:2012/01/04(水) 14:49:02.14
>>702
上:コールバック関数やデリゲートに渡すやつで
  「関数の型(引数リスト)が決められているけど
   引数は結局使われない」というケース。>>699 はその例
下:2.058(次期リリース)以降の話。
704デフォルトの名無しさん:2012/01/04(水) 15:44:02.20
>>702
C言語やってないだろ!引数を参照しないとコンパイル時に警告でるからそれ対策で型名だけにするってよくやるよ
705デフォルトの名無しさん:2012/01/04(水) 23:44:58.41
>>704
そうそれが知りたかった
706デフォルトの名無しさん:2012/01/05(木) 01:32:26.19
707デフォルトの名無しさん:2012/01/05(木) 09:25:27.92
>>704
しらねーよ!悪かったな!
708デフォルトの名無しさん:2012/01/05(木) 17:24:31.05
709デフォルトの名無しさん:2012/01/05(木) 19:10:11.82
はやっ
どうなってんだ
710デフォルトの名無しさん:2012/01/05(木) 23:12:29.93
はやすぎる(笑)
711デフォルトの名無しさん:2012/01/05(木) 23:23:18.36
ム板では結局ここが一番落ち着く
712デフォルトの名無しさん:2012/01/05(木) 23:29:57.36
上に同じこと書いたのを完全に忘れていた
もう駄目かな…
713デフォルトの名無しさん:2012/01/05(木) 23:45:00.75
・基本的にWalterは毎日commitを行っている
・PullRequestも最低1つぐらいは一日にマージされる
・Parser関係のfixは理解しやすい&影響範囲も限られる
→変更の規模としては小さい部類なので比較的早くにマージされる

まあ、パッチの規模がでかいと逆に半年ぐらい放置状態になるんだけど。
714デフォルトの名無しさん:2012/01/06(金) 06:30:57.53
他の言語と違ってここのはコンパイラの修正がユーザーに近い時点で行われてるから
根強いファンが絶えないのも頷けるなw
715デフォルトの名無しさん:2012/01/08(日) 14:40:44.35
dwt2もgithubに移行か
716デフォルトの名無しさん:2012/01/08(日) 18:03:48.52
dwt2 もろくにメンテされてなかったけど
移行してマシになるの?
717デフォルトの名無しさん:2012/01/08(日) 20:18:31.68
一応メンテはされてるんだけど
オフィシャルへの反映が遅い…
718デフォルトの名無しさん:2012/01/08(日) 23:41:55.28
ハードウェアがより高性能に進化、ソフトウェアがより多機能に進化、
それに命令や操作をする人間は進化するどころか文化や人格を決め付けや思い込みで否定する争いを始めた
719デフォルトの名無しさん:2012/01/09(月) 01:26:59.13
DはマルチメディアやGUI関連に弱すぎる
720デフォルトの名無しさん:2012/01/09(月) 02:04:44.28
質問です。
std.randomのuniformのboundariesを指定したいときはどうすればよいのでしょうか。
721デフォルトの名無しさん:2012/01/09(月) 02:12:35.95
uniform!("[]")(0.0, 1.0, generator);
722デフォルトの名無しさん:2012/01/09(月) 09:33:38.41
なんだその指定方法(笑)
723デフォルトの名無しさん:2012/01/09(月) 10:53:52.75
>>721
ありがとうございました。
724デフォルトの名無しさん:2012/01/09(月) 11:27:03.86
おまえらバンドのDは好き?
http://www.d-gcr.com/
725デフォルトの名無しさん:2012/01/09(月) 16:41:13.84
今はじめて知ったから好きも嫌いもない
726デフォルトの名無しさん:2012/01/09(月) 17:06:04.89
知ってたけど話題にするほどいいバンドじゃないからあえて書き込まなかったのに…
727デフォルトの名無しさん:2012/01/10(火) 06:38:59.55
すみません。教えてください。

可変個関数引数に、ポインタを指定するにはどうすれば良いですか?

void die( ... )
{
real* foo = cast( real* )_argptr;
*foo = 0.0;
}

void main()
{
real evil = 666.0;
die( &evil );
}

こんな感じなのですが、上手く渡せません。

すいません。よろしくお願いします。
728デフォルトの名無しさん:2012/01/10(火) 10:15:31.56
import core.vararg;
...
real* foo = va_arg!( real* )( _argptr );
...

phobos のソースを _argptr でgrepした (w
729デフォルトの名無しさん:2012/01/11(水) 02:01:31.34
それポインタ?
730デフォルトの名無しさん:2012/01/11(水) 11:51:42.81
_argptrは、渡された引数へのポインタなんだから。
http://ideone.com/j4fL9

でも、もっといいのは、可変個引数関数を使うのではなくて、テンプレートのタプルを使う方法。
http://ideone.com/oNAbZ

もっと言うなら、ポインタを渡さずに、ref引数や、参照型のクラスを使う方が安全。
731デフォルトの名無しさん:2012/01/11(水) 15:05:14.13
Internal error: ..\ztc\cgcs.c 354
ってなんぞ?
732デフォルトの名無しさん:2012/01/11(水) 16:45:47.49
自己解決しますた
配列を返す関数を呼んでその戻り値に直接[]で添え字指定してたのが問題のようですた
733デフォルトの名無しさん:2012/01/11(水) 17:38:51.29
Deimos楽しそうだね
734デフォルトの名無しさん:2012/01/11(水) 19:39:44.49
なにせDでアプリ書くにはCのライブラリが必sゲルンゲフン
735デフォルトの名無しさん:2012/01/11(水) 20:26:50.36
githubから消えてるんだけどdeimosってどこにあるんだ
あとVisualDがインテリセンス的なもの載せてさらに凄くなってやがる
736デフォルトの名無しさん:2012/01/12(木) 01:00:24.65
737デフォルトの名無しさん:2012/01/12(木) 01:11:09.31
Dもrubyみたいにブラッシュアップしてくれる中学生(ただし美少女に限る)どこかにいないかな
738デフォルトの名無しさん:2012/01/12(木) 20:10:17.09
スタックやキューなどのデータ構造のコレといったライブラリはありますか?
なければ自分で作るのでいいんですが、一応……。
739デフォルトの名無しさん:2012/01/12(木) 20:58:39.02
dcollectionsなのかなあ、コレというのは
個人的には配列が強力すぎて必要性を感じない
740デフォルトの名無しさん:2012/01/15(日) 11:28:39.23
bool foo(T)(T[] a ...){
return true;
}
void main(){
assert(foo(1,1,1,1,1,1));//OK
assert(foo("abc","abc","abc","abc"));//コンパイルエラー
}

これをコンパイルしようとしたら
test.d(6): Error: expected 1 function arguments, not 4
って怒られる
741デフォルトの名無しさん:2012/01/15(日) 12:09:07.55
foo(1,1,1,1,1,1);
のほうは実は
foo([1,1,1,1,1,1]);
でも呼び出せる。
2番目のもこれだと解釈されてる
742デフォルトの名無しさん:2012/01/15(日) 12:09:27.16
import std.stdio;

bool foo(T)(T[] a ...){
  foreach(i; a)
    write(i);
  return true;
}
void main(){
  foo([1,2,3]); // 出力: 123
}

SomeType[] a ...
という可変個引数の場合、可変部分ナシで配列を一つ渡すことでaに直接配列を渡せる。
だから、文字列(char[])に限らずfooに最初配列を渡した時点でaに対して配列を渡したことになって、複数渡すとエラーになる。

配列自体を可変個引数として渡したい場合は
foo!(string)("abc", "abc", "abc")
foo!(int[])([1,2,3], [4,5,6])
みたいにTが何であるか教えてやらないといけない。
743デフォルトの名無しさん:2012/01/15(日) 13:03:58.75
>>741-742
Tをちゃんと指定しないといけないんですね。
ありがとうございました。
744デフォルトの名無しさん:2012/01/15(日) 13:07:31.14
いやまあ、引数が配列複数な時点でコンパイラがTを配列として扱うべきな気もするけど……
745デフォルトの名無しさん:2012/01/19(木) 12:38:20.34
std.container.Array!(char) str;
が通らないんですけどどうすればいいんでしょう
ちょっとgcから切り離されたstringが欲しかっただけなんですけど
746デフォルトの名無しさん:2012/01/19(木) 14:28:21.70
>>745
malloc/freeを直接つかうとか
747デフォルトの名無しさん:2012/01/19(木) 19:07:59.01
@property void push(int[] arr, int val) { arr ~= val; }
void main() {
 int[] arr;
 arr.push = 42;
}

UFCSとか見てて、どうせだからこういうことしたくなるけど
さすがに無茶だよなぁ
748デフォルトの名無しさん:2012/01/19(木) 19:11:08.92
>>745
Array!(dchar) にしないとだめみたいだな
いいんだか、悪いんだか
749デフォルトの名無しさん:2012/01/19(木) 19:41:50.36
>>747
後でソース読むときが大変だと思う
750デフォルトの名無しさん:2012/01/19(木) 20:35:15.76
interfaceにGUID付けられるようにならないかな
RTTIからGUID取れるようにしてObjectのQIだけですべてのパターンに対応できる感じで
まあDelphiのパクリなんだけど
ちなみにこんな感じでできたら最高
http://ideone.com/GspW0
751デフォルトの名無しさん:2012/01/20(金) 04:40:49.62
昆布のtoってオブジェクトに対してかけるとobj.to!Tに転送されるんだね
ソース見るまで気づかなかった
752デフォルトの名無しさん:2012/01/20(金) 08:25:24.26
class A{
T to(T:string)(){
return "";
}
}
toStringより特殊化の方がいいってこと?
753デフォルトの名無しさん:2012/01/20(金) 10:53:58.40
最近は
T to(T)() if (is(T == string)) {
のほうだな
754デフォルトの名無しさん:2012/01/20(金) 11:09:13.49
しかし class の to は deprecate で cast 使うようになりそう?
http://www.d-programming-language.org/phobos/std_conv.html#toImpl
Scheduled for deprecation in January 2012. Please define opCast for user-defined types instead of a to function. to will now use opCast.
755デフォルトの名無しさん:2012/01/20(金) 11:42:27.25
to は双方向で
toString は一方通行のイメージ
756デフォルトの名無しさん:2012/01/20(金) 23:04:37.08
foreachでmixinって出来ない?
foreachを展開してmixinしかないかな
こんな感じにしたい
int abc, def;
foreach(s; ["abc", "def"])
writeln(mixin(s));
757デフォルトの名無しさん:2012/01/21(土) 00:59:55.47
mixinの中身はコンパイル時に確定しないといけないから無理じゃないかな
今CTFEでループさせるなら再帰しか無いけどstatic foreachって入る予定あるの?
758デフォルトの名無しさん:2012/01/21(土) 01:55:05.17
>>756
こういう事じゃないんだろうな、と思いつつ。
http://ideone.com/iZWxL
759デフォルトの名無しさん:2012/01/21(土) 02:14:38.17
>>756
foreachをコンパイル時に回す(=展開する)なら、
配列ではなくタプルを渡すとうまく行く

import std.traits;
foreach(s;TypeTuple!("abc","def"))
 writeln(mixin(s));
760デフォルトの名無しさん:2012/01/21(土) 02:25:29.44
>>751-755
型Aのオブジェクトaから型Bへの変換を行わせたい時、std.conv.toは
1. a.opCast!B()
2. a.to!B() // deprecated
3. B(a) // Bはstruct
または new B(a) // Bはclass
を試そうとする。但し B==string の場合はa.toString()が優先される。
761デフォルトの名無しさん:2012/01/21(土) 02:51:27.28
>>757-759
聞いてみるもんだなありがとう!
>>759がまんまだったよ
でもstd.traitsじゃなくてstd.typetupleだった
762デフォルトの名無しさん:2012/01/21(土) 02:56:10.51
俺はなんて遠まわしな事をしているんだ。
http://ideone.com/dUPb6
763デフォルトの名無しさん:2012/01/21(土) 07:35:04.36
>>759
おおすばらしい
この辺いつか文法的に整理されると信じてる
764デフォルトの名無しさん:2012/01/21(土) 11:52:28.16
>>761
正直言ってTypeTupleという名前は混乱の元だと思ってる。
(型だけではなく式やシンボルも受け取れるので)
Seq!(...)より抽象的でいいと思うんだけどなあ
765デフォルトの名無しさん:2012/01/21(土) 22:38:12.57
ところでRangeって便利ですか?
766デフォルトの名無しさん:2012/01/21(土) 22:54:46.75
Ranger
767デフォルトの名無しさん:2012/01/22(日) 00:04:41.28
便利さが実感できない
768デフォルトの名無しさん:2012/01/22(日) 00:45:12.66
かゆいところに手が届かない
769デフォルトの名無しさん:2012/01/22(日) 14:33:09.60
auto cap = std.regex.match( ... ).captures;

cap.length == 0 と cap.empty の結果が違うのはなんでなん?
770デフォルトの名無しさん:2012/01/22(日) 16:30:51.49
間違えた
前は cap.empty を見なくても length だけで行けてたのに、何で変えてしまったん?
771デフォルトの名無しさん:2012/01/22(日) 16:31:16.51
違わないけどどういう時?
772デフォルトの名無しさん:2012/01/22(日) 16:41:52.41
公式じゃないdflってドラッグドロップしたら落ちるバグって治ってますか
773デフォルトの名無しさん:2012/01/22(日) 17:05:25.62
確かこのスレの人が直したはず
774デフォルトの名無しさん:2012/01/22(日) 18:12:29.32
Application.autoCollect = false;

公式見解のこの方法じゃなくて?
775デフォルトの名無しさん:2012/01/22(日) 18:18:14.98
>>769-771
auto cap = std.regex.match( ... ).captures;
if (cap.length == M+1) {
// マッチしたときの処理
// 2.057 だとマッチしなくても入ってくる
}

こんな風に書いてたのが全滅して泣いた
776デフォルトの名無しさん:2012/01/24(火) 23:07:56.06
スコープの外に出てないローカルオブジェクトってスコープの終わりで自動的にGCとかされます?
777デフォルトの名無しさん:2012/01/25(水) 00:06:00.07
>>776
ttp://kmonos.net/alang/d/2.0/garbage.html
されない。明示的にdeleteしても、scope属性を付けても保証されるのはデストラクタの実行まで。
core.memory.GC.collect()を呼んでも動かないかも?
ttp://bm98.yaneu.com/dlang/Chapter-06.html
↑ちょっと古いけど、この辺の実装今はどうなってるんだろう?
778デフォルトの名無しさん:2012/01/25(水) 00:07:04.54
いえーい!777ゲット!
779デフォルトの名無しさん:2012/01/25(水) 00:07:22.76
oh…
780デフォルトの名無しさん:2012/01/25(水) 00:16:29.13
>>778
777オメw
781デフォルトの名無しさん:2012/01/25(水) 07:49:24.19
782デフォルトの名無しさん:2012/01/25(水) 07:58:58.20
783デフォルトの名無しさん:2012/01/26(木) 02:00:58.42
すぐバグ修正されるのは素晴らしいね
784デフォルトの名無しさん:2012/01/27(金) 18:00:14.63
if ( DialogResult.YES == msgBox( msg, caption, MsgBoxButtons.YES_NO), MsgBoxIcon.QUESTION )
doSomething();
785デフォルトの名無しさん:2012/01/28(土) 01:07:17.94
しまった、オカルト板と間違えた
786デフォルトの名無しさん:2012/01/28(土) 11:32:26.21
闇言語だからだいたいあってる
787デフォルトの名無しさん:2012/01/28(土) 15:33:27.90
いつから出来なくなったん・・
auto f = FILE("test.txt", "w");
788デフォルトの名無しさん:2012/01/28(土) 16:42:32.13
>>784
ついった見ててやっとわかったけど `, MsgBoxIcon.QUESTION` の位置を間違えてるせいで
毎回doSomething()が実行されてナニコレ、って言いたかったんだな
789デフォルトの名無しさん:2012/01/28(土) 20:35:04.94
auto f = File("test.txt", "w");
790デフォルトの名無しさん:2012/01/29(日) 01:19:23.20
>>789
その考えは盲点でした。すばらしい!!
791デフォルトの名無しさん:2012/01/29(日) 16:33:18.48
Add new => lambda syntax.
なにこれ
つーかアップデートのたびBug直されまくってるのな
792デフォルトの名無しさん:2012/01/29(日) 16:38:36.32
793デフォルトの名無しさん:2012/01/29(日) 16:51:09.63
dmdやphobosのバグに対処するのは楽しいがoptlinkだけはダメだ
血管が切れそうになる
794デフォルトの名無しさん:2012/01/29(日) 17:24:14.36
http://d.puremagic.com/issues/show_bug.cgi?id=6831
RESOLVED WONTFIX だと・・・? orz
795デフォルトの名無しさん:2012/01/29(日) 20:08:19.93
ラムダ式って => になんの?
既存の演算子を使い回すのやめてくれよ
796デフォルトの名無しさん:2012/01/29(日) 20:11:30.02
既存?
Dの外の話でもしてるのか?
797デフォルトの名無しさん:2012/01/29(日) 20:11:32.91
新しい文法だそうで
=>これまで使われてたか?
798デフォルトの名無しさん:2012/01/29(日) 20:26:31.18
未使用
799デフォルトの名無しさん:2012/01/29(日) 21:06:53.00
Haskell とかで別の意味の演算子として使われてるとかそういう話か?
800デフォルトの名無しさん:2012/01/29(日) 21:30:41.51
C#とかでも=>だから合わせた方がいいんだろな
801デフォルトの名無しさん:2012/01/30(月) 21:56:29.10
久しぶりにD言語スレ見てみたが相変わらず破壊的変更はあるようで
Rangeについて詳しい資料公式に転がってないか?
802デフォルトの名無しさん:2012/01/30(月) 22:17:51.92
ここが最近の詳しく解説しているページ。公式かどうかは知らない。
http://ddili.org/ders/d.en/ranges.html
803デフォルトの名無しさん:2012/02/01(水) 01:02:10.04
class A{void f(){}}
class B: A{override void f(){}}

のとき、Bを継承したクラスがfをオーバーライドしてるか判断する方法ってありますか?
804デフォルトの名無しさん:2012/02/01(水) 01:08:55.00
Bをさらに継承したクラスCがあった場合
(&B.f is &C.f) で判断できる
これがtrueの場合オーバーライドしていない
805デフォルトの名無しさん:2012/02/01(水) 01:31:01.79
import std.stdio;
class A{void f(){}}
class B:A
{
  void p(B b){
    if(&b.f is &f){
      writeln("---");
    }else{
      writeln("override!");
    }
  }
  override void f(){}
}
class C:B{}
class D:C{override void f(){}}

void main()
{
  auto b = new B;
  b.p(new C);
  b.p(new D);
}

実行結果
override!
override!


なぜ・・・orz
806デフォルトの名無しさん:2012/02/01(水) 01:44:59.45
auto v1 = &b.f;
auto v2 = &f;
(v1.funcptr is v2.funcptr)
これで判断できました。ありがとうございます。
807デフォルトの名無しさん:2012/02/01(水) 21:27:54.19
scopedってもう使ってもいい系?
808デフォルトの名無しさん:2012/02/01(水) 22:02:42.96
なんか悪い噂とかあったっけ?
809デフォルトの名無しさん:2012/02/01(水) 22:19:17.76
scope記憶クラスの代用品として仮実装中ってどっかで見たような記憶があるようなないような
810デフォルトの名無しさん:2012/02/02(木) 01:21:12.60
class A { }

void main() {
Object[] a = new A[2];
}

これ暗黙変換できなくなったの?
811デフォルトの名無しさん:2012/02/02(木) 02:11:51.89
それ元からできないと思う
812デフォルトの名無しさん:2012/02/02(木) 02:25:44.57
>>810
それを許すと以下のような問題が起きる

class A { } 
class C { } 

void main() { 
Object[] a = new A[2]; 
a[0] = new C; // Aしか入らない所にCを入れている
813デフォルトの名無しさん:2012/02/02(木) 02:34:58.93
いやその理屈はおかしい
814デフォルトの名無しさん:2012/02/02(木) 02:41:46.52
Javaでもできたお
815デフォルトの名無しさん:2012/02/02(木) 02:42:33.29
動的に静的の問題じゃないの?
816デフォルトの名無しさん:2012/02/02(木) 18:27:31.78
>>810
>Object[] a = new A[2];
これと
Object[] a = [ new A(), new A() ];
これは違うよね。上は暗黙変換出来なくていいと思う。
817デフォルトの名無しさん:2012/02/02(木) 19:00:50.88
A[2] b;
pragma(msg, typeof(new A[2]));
pragma(msg, typeof( [new A(),new A()] ));
pragma(msg, typeof(b));

A[]
A[]
A[2u]
818デフォルトの名無しさん:2012/02/02(木) 19:06:16.22
>>817
ほお…知らなかった
Dの静的配列と動的配列の値渡し/参照渡しとかの仕様が頭の中でこんがらがる
819デフォルトの名無しさん:2012/02/02(木) 20:56:50.02
前から気になってたんだけど
static if(...) {
} else static if(...) { ← ここのstaticってなんで必要なの?
}
820デフォルトの名無しさん:2012/02/02(木) 21:20:36.45
static if(...) {
} else {
  static if(...) {
   ...
  }
}
の略だから
821デフォルトの名無しさん:2012/02/02(木) 21:28:43.30
>>817
816で言いたかったのは、動的か静的かではなく、
>Object[] a = new A[2];
は配列長を確保してるだけなので必要な場面が思いつかない。
暗黙変換できなくていいと思う。
でも810がやりたかったのはエスパーすると
Object[] a = [ new A(), new A() ];
こっちじゃね?なら暗黙変換できるよーと言う事です。
822デフォルトの名無しさん:2012/02/02(木) 21:52:58.62
new A[2];の結果は各要素(参照)がnullである長さ2の動的配列ってことか

new A[2];はnew A[](2);に読み替えられてるのかな
823821:2012/02/02(木) 22:02:22.30
あ、「先祖クラスの配列へのcastは例外的に暗黙でいいやん」と言う話だったならたしかにそう思います。
824デフォルトの名無しさん:2012/02/02(木) 22:10:09.59
>>822
Error: cannot implicitly convert expression (new A[](2u)) of type A[] to Object[]

と出てるからまさにその通りだと思う。
825デフォルトの名無しさん:2012/02/02(木) 22:20:34.66
>>822
C++感覚で new A[2] と書くとドツボにはまりそう。
826デフォルトの名無しさん:2012/02/02(木) 23:53:54.57
静的配列
サイズがコンパイル時に決定
値渡し、返り値にも使える
静的配列の代入は複製
動的配列はサイズが同じなら代入できる、違えば例外、この場合も複製されるはず(うろ覚え)

動的配列
参照型
int[]にint[10]とかを代入できるはずだがどうなるかは忘れた
827デフォルトの名無しさん:2012/02/03(金) 01:53:58.80
>>826
int[10] a;
int[] b;
b = a; // 複製されない
assert( b.ptr == a.ptr );
b = a.dup; // 複製される
assert( b.ptr != a.ptr );
b[] = a; // 複製される
assert( b.ptr != a.ptr );
828デフォルトの名無しさん:2012/02/03(金) 19:48:53.28
$ type reg.d
import std.regex;
import std.stdio;
void main() {
writeln(match("他"d, regex("バ"d)));
writeln(match("他"d, regex("ビ"d)));
writeln(match("他"d, regex("ブ"d)));
}
$ dmd -run reg.d
[]
[]
core.exception.AssertError@D:\devtools\dlang\dmd2\windows\bin\..\..\src\phobos\std\utf.d(800): Attempted to decode past the end of a string


偶然踏んでしまった
829デフォルトの名無しさん:2012/02/03(金) 22:41:57.52
056->057間のstd.regexの変更っぷりに吹いた
830デフォルトの名無しさん:2012/02/04(土) 08:13:07.47
typeidと.classinfoがあるのは歴史的な理由?便利さから?
831デフォルトの名無しさん:2012/02/04(土) 08:28:41.96
>>810
公式ドキュメントのArraysに暗黙変換できるって書いてんだが…
832デフォルトの名無しさん:2012/02/04(土) 12:44:43.72
きっと夢でも見たんだろう
833デフォルトの名無しさん:2012/02/04(土) 12:49:28.15
2.057ではねられるようになって首を傾げてたんだぜ
やっぱり regression か
834デフォルトの名無しさん:2012/02/04(土) 17:44:44.34
Arrayに関しては禁止するべきだと思うんだがな
動的配列に静的配列入れたときも破壊的変更するとき初めてコピーされるという奇妙な仕様になってるし明示的にdupとかキャストさせるべき
835デフォルトの名無しさん:2012/02/04(土) 19:04:51.37
っCopy-On-Write
836デフォルトの名無しさん:2012/02/06(月) 12:32:24.51
>>831-833
http://d.puremagic.com/issues/show_bug.cgi?id=926

なんか 「D2 では禁止!ドキュメントが古い!」とか
言ってるんすけど・・・ユルセナイ シャザイト バイショウヲ ヨウキュウシル
837デフォルトの名無しさん:2012/02/06(月) 13:12:32.03
trunk のドキュメントをのぞいて見たらこうなってた。(´・ω・`) ショボーン

○ A[] -> const(Object)[]
× A[] -> Object[]
838デフォルトの名無しさん:2012/02/06(月) 19:16:23.41
あー、うーん、まあそうか…
839デフォルトの名無しさん:2012/02/06(月) 19:35:51.35
なるほど、そうじゃないと
auto a1 = new A[](10);
Object[] a2 = a1;
a2[0] = new Object;
でバグっちゃうのか。
明示的に
Object[] a2 = a1.dup;
こうするのは今もできるってことね
840デフォルトの名無しさん:2012/02/06(月) 20:30:19.03
そういやdupでimmutable剥がせる件ってどうなったんだろ
841デフォルトの名無しさん:2012/02/07(火) 17:22:48.20
細かい仕様変更にはもうついていけないよう
842デフォルトの名無しさん:2012/02/08(水) 00:52:17.22
dupはimmutableはがせるでしょ
idupだとimmutableのまま
843デフォルトの名無しさん:2012/02/08(水) 02:57:23.76
constとimmutableの違いがよく分からないよぅ
844デフォルトの名無しさん:2012/02/08(水) 03:03:38.39
const: 不変値を関数間で共有
immutable: 不変値をスレッド間で共有
845デフォルトの名無しさん:2012/02/08(水) 09:54:57.34
2.058ダウンロードどこでできるんですか!?
846デフォルトの名無しさん:2012/02/08(水) 12:12:21.70
まだリリースされてない
どうしてもさわってみたければ github から3点セットでDLしてビルドしる
847デフォルトの名無しさん:2012/02/08(水) 17:35:50.05
>>844
間違ったこと教えちゃいかんよ・・・

const その参照から値は変えられないが、別の要因で変わることがある。
immutable いかなる要因でも値が変わらない。
848デフォルトの名無しさん:2012/02/08(水) 17:50:05.45
constの分かりやすい例。
http://ideone.com/sGgmK
849デフォルトの名無しさん:2012/02/08(水) 18:46:46.08
ガンダムで例えると
シールド付きがconstで
フルアーマーがimmutableってことね

この例えはとにかく、なるほど…勉強になりました。
850デフォルトの名無しさん:2012/02/08(水) 18:52:49.18
constは引数変数向けの型ってイメージがあるな
引数と関わりのないconst変数なんて作らないよね?
851デフォルトの名無しさん:2012/02/08(水) 19:05:15.37
クラスのフィールドでインスタンス初期化時に固定するものとかconstにする
852デフォルトの名無しさん:2012/02/08(水) 19:09:39.82
それってimmutableでもいけるんじゃないの?
853デフォルトの名無しさん:2012/02/08(水) 20:19:05.10
Const と Immutable
http://www.kmonos.net/alang/d/2.0/const3.html

>>852
static this()
854デフォルトの名無しさん:2012/02/09(木) 16:56:02.59
static thisでだとimmutable初期化できないのかーと思ったけどできるじゃん
どういうことが言いたかったの?
855デフォルトの名無しさん:2012/02/09(木) 18:53:53.23
>>854
ごめん、勘違いしてた
856デフォルトの名無しさん:2012/02/10(金) 19:16:59.45
下のコードをコンパイルするとdmdが落ちるんですが。
dmdのバージョンは2.057です。
template foo(T){
 enum foo = __traits(hasMember,T,"sizeof");
}
static assert(foo!(int)); //DMD Crash
857デフォルトの名無しさん:2012/02/10(金) 19:33:23.96
久々にGUIライブラリを見て回った
gtkD・wxD・DFL(fork)・DWT辺りは元気だけどQtDが死んでるなぁ
どこか別の所で元気にやってるのかな?
858デフォルトの名無しさん:2012/02/10(金) 19:45:03.62
>>856
trunk の最新ソースを落としてビルドしたら落ちなくなってた(WinXP 32)
859デフォルトの名無しさん:2012/02/10(金) 19:57:57.79
>>858
では、2.058では解決されているのですね
ありがとうございます
860デフォルトの名無しさん:2012/02/12(日) 10:01:51.83
明日は2.058リリースか
3.0とかどうなったんだろな
861デフォルトの名無しさん:2012/02/12(日) 13:11:08.52
D3はmoduleに代わってnamespaceを導入して
呼び出し側でもrefとかoutとかつけて属性を明示できるようになって
プロパティはset/getキーワードを用意して自然に表現できるし
Attributeクラスでメソッドの属性を自作できる上にラムダ式とかも余裕で使えるし
しかも.NETフレームワークで動く
862デフォルトの名無しさん:2012/02/12(日) 13:12:55.18
今更namespaceとかありえないんじゃないかな
863デフォルトの名無しさん:2012/02/12(日) 13:16:46.99
>>861
あとはVisualStudioで開発できれば完璧だな
864デフォルトの名無しさん:2012/02/12(日) 13:29:42.65
D3では多重ディスパッチがついて型推論が進化
865デフォルトの名無しさん:2012/02/12(日) 14:26:26.13
D3ではなんとヘッダーとソースをファイルレベルで分離して記述することができるようになります!
866デフォルトの名無しさん:2012/02/12(日) 14:27:41.37
ヤメテ!
867デフォルトの名無しさん:2012/02/12(日) 15:37:41.30
機能追加を国民投票で選びます
投票券はTDPLに付属
868デフォルトの名無しさん:2012/02/12(日) 17:04:21.14
呼び出し側にrefつけるのは普通に欲しい
必須じゃなくてもつけまくるわ
869デフォルトの名無しさん:2012/02/12(日) 17:49:28.42
>>868
C# とか VBのアレか
アレはすごくほしい

けどタプルとかうまく使ったらいらないぜ
ってものかも知れない
870デフォルトの名無しさん:2012/02/13(月) 00:20:34.12
なにそれ。
D3 と C# の違いを教えてくれ。
const ありの C# としても使えるならぜひ使おうかと思うんだが。
871デフォルトの名無しさん:2012/02/13(月) 00:23:01.61
D3.0はPerl6よりは現実的な開発が予定されてる言語
872デフォルトの名無しさん:2012/02/13(月) 01:02:54.60
Perl6ってそんな非現実的なの?w
873デフォルトの名無しさん:2012/02/13(月) 01:12:46.83
はたしてあれ実装できるんだろうか
WebProg板にスレあったはず
874デフォルトの名無しさん:2012/02/13(月) 01:23:54.85
ググってみたら吹いた。
設計開始から10年で初の処理系ってD言語超えてるな
875デフォルトの名無しさん:2012/02/13(月) 07:09:01.91
心配すんな、クリスマスには出る
876デフォルトの名無しさん:2012/02/13(月) 19:03:17.74
Dは登場と共に処理系もあったじゃないか
永遠に開発中だけど
877デフォルトの名無しさん:2012/02/13(月) 19:16:20.31
設計完了に先立つこと10年にして早くも処理系
878デフォルトの名無しさん:2012/02/13(月) 20:23:52.67
C言語だって・・・最終仕様より先に初期実装があったんだ!
879デフォルトの名無しさん:2012/02/13(月) 22:27:50.33
何気にD2.058待機してる
880デフォルトの名無しさん:2012/02/13(月) 23:50:47.57
とみせかけてD3.0くるー
881デフォルトの名無しさん:2012/02/14(火) 01:35:40.48
リリースは延期だと思うよw
882デフォルトの名無しさん:2012/02/14(火) 06:56:34.19
いつのまにか、AAA Cafeが終わってた。orz....
D言語研究が消えた。ショック
883デフォルトの名無しさん:2012/02/14(火) 21:35:54.05
D言語研究とこは色々とサンプルコードがあって気に入ってたのになあ
InternetArchiveには数年前のしか残ってないし
俺もショックだ
884デフォルトの名無しさん:2012/02/14(火) 22:34:02.00
徐々に消えていってるな
885デフォルトの名無しさん:2012/02/15(水) 01:46:51.54
破壊的変更, world.
886デフォルトの名無しさん:2012/02/15(水) 15:05:43.07
D2.058 キタ━(゚∀゚)━!
887デフォルトの名無しさん:2012/02/15(水) 15:43:25.10
change log が出揃うまではリリースとはみとめない(キリッ
888デフォルトの名無しさん:2012/02/15(水) 15:46:00.10
Version D 2.058 upcoming Feb 13, 2012
New/Changed Features

Add new => lambda syntax.
Allow 1.userproperty syntax
Convert to -shared dmd switch instead of -dylib
Better use of XMM registers in OS X 32 bit target.
889デフォルトの名無しさん:2012/02/15(水) 15:50:27.05
>>701 の件

Bugzilla 314: [module] Static, renamed, and selective imports are always public

この2つは Breaking Change に近い
890デフォルトの名無しさん:2012/02/15(水) 15:57:19.87
Bugzilla 4550: D2 Language Docs: http://www.digitalmars.com/d/2.0/statement.html
Bugzilla 4553: D2 Language Docs: http://www.digitalmars.com/d/2.0/struct.html

↑これって何かが変わったの?
891デフォルトの名無しさん:2012/02/15(水) 15:59:58.14
Identifier => AssignExpression

1.userproperty
がわからねぇ。どなたか教えてください。
892デフォルトの名無しさん:2012/02/15(水) 16:04:55.62
http://www.d-programming-language.org/arrays.html

これの最後に >>837 の件が反映されてない。まだリリース完了してない
もちつけ
893デフォルトの名無しさん:2012/02/15(水) 16:37:58.58
>>890
Bugzilla から pull request の中を見ればわかる
サンプルソースのほんのちょっとの間違いを修正しただけっぽい
894デフォルトの名無しさん:2012/02/15(水) 16:39:34.06
リリース正式アナウンスキタ
895デフォルトの名無しさん:2012/02/15(水) 17:02:55.93
ddemangle って何これ?
896デフォルトの名無しさん:2012/02/15(水) 17:08:44.79
なんで今回こんなに更新待ちの人多いのw
897デフォルトの名無しさん:2012/02/15(水) 17:43:03.14
更新がD言語を使う目的だからだけど?
他に理由があるの?
898デフォルトの名無しさん:2012/02/15(水) 17:44:02.53
Dの更新が無いなら
俺はD言語なんて使わないね
899デフォルトの名無しさん:2012/02/15(水) 17:47:13.60
>>898の王子様キター
900デフォルトの名無しさん:2012/02/15(水) 20:41:58.06
>>891
具体的な事は知りもせずに言うけど

1.userpropertyは今まで配列でできてたアレ。
 @property void hoge(int i) {writelen(i);}
っていう関数を用意しておくと
 hoge(42);
の代わりに
 42.hoge;
みたいに呼び出せる。

=>に関してはC#のラムダ式の記事でも見た方が早い
901デフォルトの名無しさん:2012/02/15(水) 21:01:28.48
>>895
dのマングルされたシンボルをデマングルするんじゃね?
902デフォルトの名無しさん:2012/02/15(水) 21:21:24.18
何の説明もなく実行ファイルが増えていることに対して不審をおぼえるのよ
俺の野生の勘が(ry
903デフォルトの名無しさん:2012/02/15(水) 21:27:13.70
>>900
Rubyキタ

生成したexeのサイズがD2.055のに比べても小さくなってるなあ
よし、VersionUp時
904デフォルトの名無しさん:2012/02/15(水) 22:00:44.56
2.057 (int x, int y) { return x+y; }
2.058 (x, y) => x+y
905デフォルトの名無しさん:2012/02/15(水) 22:11:14.60
>Use of base class protection is now deprecated.
ってなんぞ?
906デフォルトの名無しさん:2012/02/15(水) 22:42:50.10
public継承でも>>905のエラー出るんだが。
public class A : public B { }
とかでも。
907デフォルトの名無しさん:2012/02/15(水) 23:02:47.60
そこにpublicだのなんだの置くこと自体がdeprecatedってことじゃね?
908デフォルトの名無しさん:2012/02/15(水) 23:21:37.12
そか。一括置換で消すか
909デフォルトの名無しさん:2012/02/15(水) 23:43:33.84
クラスのprotectionが無くなってアクセス修飾子が不要になったってことだな
910デフォルトの名無しさん:2012/02/15(水) 23:44:09.93
えっマジで?
public継承のみになったの?
911デフォルトの名無しさん:2012/02/15(水) 23:51:23.29
>>910
「基底クラス保護の使用は廃止」だからな
912デフォルトの名無しさん:2012/02/16(木) 00:23:10.58
>>891
これは1.userpropertyがパーザーで
(1).userpropertyとして扱われるようになった、という変更。
あくまでパーザーの改善なので、>>900のようなことは「まだ」できない。

>>900 はUniform Function Call Syntax(UFCS)と呼ばれるやつだが、これは
まだ入ってない。
https://github.com/D-Programming-Language/dmd/pull/582
ここでPullRequestは出されている。Andreiのコメントを読む限り
配列に限らずあらゆる型でのUFCSは動作するべきらしい。
913デフォルトの名無しさん:2012/02/16(木) 00:26:09.37
>>895
ddemangleは標準入出力を通したテキストにDのmangled nameが含まれる場合
これをdemangleしてくれるツール
stack traceとかをパイプでddemangleに食わせると出力を読みやすい形式に
変換できる
914デフォルトの名無しさん:2012/02/16(木) 00:27:28.52
すごい詳しいな
915デフォルトの名無しさん:2012/02/16(木) 00:29:47.55
>>904
ちなみにTDLPに書かれていたfunction/delegate推論も追加された
関数リテラルでfucntion/delegateを明示せずに (x, y) { ... } とか書くと
... のコードが外側フレームを参照してない場合に自動的にfuncitonに
推論される(いままでは必ずdelegateになっていた)
916デフォルトの名無しさん:2012/02/16(木) 00:31:10.29
>>911
確かに滅多に使わないけど
完全廃止とはまた思い切ったな
917891:2012/02/16(木) 00:33:06.77
レスサンクス
>>912
なんだ。まだむりなのか。でもなんか胸熱展開wktk


>>904
delegate ParameterAttributes { return AssignExpression; }
だよな。では
delegate ( Identifier ) { return AssignExpression; }
これって Function Literals のなかで説明されてるっけ?
918デフォルトの名無しさん:2012/02/16(木) 00:35:01.87
大昔にdelegateとfunctionは統合される予定とか聞いてたが推論で隠す方針になったのか?
919デフォルトの名無しさん:2012/02/16(木) 00:46:24.98
920デフォルトの名無しさん:2012/02/16(木) 01:22:00.59
>>919
すまん。自己解決したかもしれん。
ParameterAttributes と Idetifier の違いが分からなかったんだが
Identifier のほうでは括弧を省略できてるってことでおk?
( x ) => x * x; // ParameterAttributs => AssignExpression
x => x * x; // Identifier => AssignExpression
ってことか
921デフォルトの名無しさん:2012/02/16(木) 01:42:59.22
void foo(int delegate(int, int) dg) {}

void main()
{
foo( (int x, int y) => x * y ); // ParameterAttributs => AssignExpression
foo( (x, y) => x * y ); // Identifier => AssignExpression
}

ってことじゃない?
922デフォルトの名無しさん:2012/02/16(木) 02:04:18.90
typeof( (a) => 1 )
void

あれ?こんな仕様だっけ?
923デフォルトの名無しさん:2012/02/16(木) 02:15:52.29
>>915
すげ〜・・・でもDMD以外の実装が涙目
924デフォルトの名無しさん:2012/02/16(木) 02:17:45.04
最適化に分類されるものじゃね?涙目ってことはないんじゃないかな
925デフォルトの名無しさん:2012/02/16(木) 02:33:12.89
>>922
そこは a の型省略できないんじゃないか?推論できないから。
typeof( ( int a ) => 1 );
int function(int a) pure nothrow @safe
926デフォルトの名無しさん:2012/02/16(木) 02:50:13.90
>>925
おっと、パラメータの型を決める所でこけてるのか。戻り値しか見てなかった

voidじゃなくてコンパイルエラーになってほしいな
927デフォルトの名無しさん:2012/02/16(木) 03:44:14.54
手元だと、これと

class A : public B { }

class A : B { }

これでいけた

float a = 255.f;

float a = 255.0f;

平和だ・・
928デフォルトの名無しさん:2012/02/16(木) 05:28:50.59
基底クラスは何が何でもpublic属性という事でFA?
929デフォルトの名無しさん:2012/02/16(木) 07:45:38.84
相変わらずの破壊的変更だがそこに痺れる憧れる
930デフォルトの名無しさん:2012/02/16(木) 15:40:18.08
2.059では breaking change じゃなくて disruptive change がくるらしい

既存のライブラリのいくつかは息を引き取るであろう
931デフォルトの名無しさん:2012/02/16(木) 16:47:35.81
崩壊的変更とか凄いな
932デフォルトの名無しさん:2012/02/16(木) 17:03:16.86
D言語って楽しいですね
933デフォルトの名無しさん:2012/02/16(木) 19:21:48.92
>>930
今世紀最大にワクワクできることきたな
934デフォルトの名無しさん:2012/02/17(金) 00:06:38.91
stream系はいつ固まるの
935デフォルトの名無しさん:2012/02/17(金) 00:16:15.58
std.ioになるとかいう話もちらほら出てなかったり
936デフォルトの名無しさん:2012/02/17(金) 19:30:02.21
constを厳密にやるとGUIライブラリが軒並み死にそうでとても楽しみだ
937デフォルトの名無しさん:2012/02/17(金) 21:07:10.73
日本語訳を…日本語訳を…!
938デフォルトの名無しさん:2012/02/17(金) 21:10:13.69
しかし今回はそんなに訳いる変更はない
939デフォルトの名無しさん:2012/02/17(金) 21:17:06.36
940デフォルトの名無しさん:2012/02/17(金) 22:27:29.76
個人的に今回のラムダ式とdelegateの型推論はうれしい
ここらへんは型がうっとおしく感じる率が高いところだったから
941デフォルトの名無しさん:2012/02/17(金) 22:58:22.17
ラムダ式楽すぎわろたwwww
942デフォルトの名無しさん:2012/02/17(金) 23:14:49.08
しかし相変わらずコンパイル早いな
943デフォルトの名無しさん:2012/02/17(金) 23:15:12.85
どういう時に使ってるの?
よかったらサンプルコード付きで教えてちょ

↓空白とか面倒だったら活用してちょ
ttp://ideone.com/
944デフォルトの名無しさん:2012/02/18(土) 00:03:36.06
>>943
例えばこういう時

/** Menuを作成する。Menuの有効・無効はenabledの結果によって随時切り替える。 */
Menu createMenu(bool delegate(Widget w, Status s) enabled) { ... }

これを以前はこういう風に使っていた
auto menu = createMenu((Widget w, Status s) {return w.isSelection;}); // wが選択状態の時だけメニュー有効

これがこう書ける
auto menu = createMenu((w, s) => w.isSelection); // listが選択状態の時だけメニュー有効

たったこれだけなんだけど、数が増えると手間がだいぶ減るし見た目もすっきりする
テンプレートとかと併用するともっと効果的なんじゃないかな
945デフォルトの名無しさん:2012/02/18(土) 00:34:48.69
視覚的にネストが浅くなるのも利点
946デフォルトの名無しさん:2012/02/18(土) 00:35:53.67
C#化するD
947デフォルトの名無しさん:2012/02/18(土) 00:42:03.88
正直今のDに不満があまり無い
ストイックすぎるか
948デフォルトの名無しさん:2012/02/18(土) 01:07:25.61
ライブラリ周りがなぁ
949デフォルトの名無しさん:2012/02/18(土) 02:08:31.06
>>944
もともとdelegateを引数にとるような所で有効だったのね。
引数にdelegateとか関数ポインタとか指定した記憶が無いから思いつかんかったよ。

そういえば、サンプルコード見てて思ったんだけど
おいらは未だに
ttp://www.dsource.org/projects/bindings/wiki/WindowsApi
こいつと CのHello Worldみたいなひな形を使って手打ちでやってるんだけど…
おまいらはどんなWindowのライブラリ使ってるの?

dflはあんまり好きじゃ無くて手放してしまったんだよね。
Dにもwtlみたいに比較的さっぱりめのライブラリがあったら是非使ってみたいとは思ってるんだけど…。
950デフォルトの名無しさん:2012/02/18(土) 03:37:43.41
両方ともjavaの影響を強く受けているが、片方はVMに、一方はネイティブに
IEnumerableとRangeも似てるが、しかし方向性が違う
ラムダ式にしても式木・動的言語環境を持ってList Processor寄りの発想で作られ
もう一方はpure関数など関数型言語としてのアプローチでラムダ式が必要になってきた

似ているようで違うのが両者
951デフォルトの名無しさん:2012/02/18(土) 11:31:08.30
>>949
無いんだな、これが

いや、大昔にはあるにはあったんだけど今ではみんな目が死んでる
952デフォルトの名無しさん:2012/02/18(土) 11:40:21.20
GUIライブラリ出来てもbreaking changeについていくメンテナが居ない
953デフォルトの名無しさん:2012/02/18(土) 11:54:08.31
DWT使ってる。理由は:
・元ネタはSWTだが実態はDネイティブ
・表面上マルチプラットフォーム
・破壊的変更にもすぐについていくことがある
・静的リンクしても問題ない(ライセンス的にも)
 DEBUG=1だとOPTLINKがエラーを吐くがDでは大した問題ではない
・膨大な機能が揃っている。一部まともに動かないが気にしない
・setXxxみたいな名前は意外と気にならない
・鬱陶しいイベント処理はラッパを作ればなんとかなる

なんといってもコンパイルできるどころかリンクまでできてしかも動くという時点で
そんじょそこらのDライブラリとは格が違うのだよ
954デフォルトの名無しさん:2012/02/18(土) 13:54:26.34
・ことがある
・大した問題ではない
・気にしない
・意外と気にならない
・なんとかなる

ひゅう……。
さすがにGUIに触ろうなんてD言語erは訓練されてやがるぜ……。
955デフォルトの名無しさん:2012/02/18(土) 14:06:55.20
他の言語だと当然のことがDだと曖昧だからな
956デフォルトの名無しさん:2012/02/18(土) 14:34:51.91
>コンパイルできるどころかリンクまでできてしかも動く

ここにまず突っ込めよw

Windows限定なら DFL がお手軽だと思うよ
957デフォルトの名無しさん:2012/02/18(土) 17:19:04.73
>>949
それまだ動くの?
958デフォルトの名無しさん:2012/02/18(土) 17:55:36.92
GUIは恥ずかしいライブラリを自作して使ってるよ
959デフォルトの名無しさん:2012/02/18(土) 20:13:38.15
>>958
むしろよかったらそれ下さい
この言語使ってると無性にライブラリが作りたくなるんだけど
作ってる最中に破壊的変更が来たりして更新する気が失せて
半年くらいしたらまたDのプログラム書きに戻って来ちゃうんだけどその頃には作ったライブラリのソースの場所を失念してたりして
車輪の再発明ばっかりでもう嫌になっちゃうw

そろそろ0からやり直し続ける程の気力が湧かなくなってきましあ><
960デフォルトの名無しさん:2012/02/18(土) 20:17:32.34
githubへどうぞ
961デフォルトの名無しさん:2012/02/18(土) 20:27:53.27
>>957
きれいな顔してるだろ、これ、5日前には更新されてるんだぜ?

Remove deprecated base class protection attributes from interface declarations
"interface Foo : public Bar" => "interface Foo : Bar"
962デフォルトの名無しさん:2012/02/19(日) 10:21:58.76
async/awaitって入る予定あんのかな
DでWinRTがバリバリに使えたら人口増えるんじゃないかな!な!
でもその前にyieldかなあ
963デフォルトの名無しさん:2012/02/19(日) 11:20:57.90
yieldってなかったっけ
えっと
op.... op... opApply
964デフォルトの名無しさん:2012/02/19(日) 11:22:26.16
関数の中断はcore.thread.Fiberでできる
965デフォルトの名無しさん:2012/02/19(日) 13:27:44.41
2.058から

interface A{}
interface B : A{}

void test( A a ){}

void hoge( A* a ){}

void main(){
B b;
test( b ); // OK
hoge( &b ); // cannot implicitly convert expression
}

とか、元々仕様なの?

どっかに詳しくあるなら、教えて
966デフォルトの名無しさん:2012/02/19(日) 13:38:55.21
ポインタェ…
D使ってるとポインタを忘れる
967デフォルトの名無しさん:2012/02/19(日) 13:56:58.22
hoge(cast(B*)b);
// 未確認
968デフォルトの名無しさん:2012/02/19(日) 14:03:06.34
Win32APIのIUnknown*とかcastが必要になったからだけど

interface A{}
interface B : A{}
interface C{}

void hoge( A* a ){}

void main(){
B b;
C c;
hoge( cast( A* )&b ); // 冗長なだけだけど
hoge( cast( A* )&c ); // OK でいいのかな?
}

とか思ったから
969デフォルトの名無しさん:2012/02/19(日) 15:06:18.47
いかん いかんぞぉぉ
970デフォルトの名無しさん:2012/02/19(日) 15:18:46.86
assert( !cast( A* )&c );
971デフォルトの名無しさん:2012/02/19(日) 15:41:17.17
CとのI/Fで必要的な意味があるはず
きっと、きっとあるはず
972デフォルトの名無しさん:2012/02/19(日) 15:43:23.05
&bは変数bへのポインタな。
オブジェクトへのポインタはキャストで取得するんだ。
973デフォルトの名無しさん:2012/02/19(日) 16:33:11.08
>>965
静的型言語としての型安全性が壊れるため。
is(B : A)のとき、暗黙変換としてB -> Aは許されるが
B* -> A*は許されない。B* -> const(A)*ならOK。
理由は

B b = new B();
B* pb = &b;
A* pa = pb; // もしこれが許されるなら
*pa = new A(); //これは合法なので
// 変数bにAのインスタンスが入ってしまう

ポインタ型について明示的に述べているところは無いが、動的配列型が同じ
問題を持っていて、それについては
http://www.d-programming-language.org/arrays.html#implicit-conversions
で書かれている。
T[] は const(U)[] に変換できる(がU[]には変換できない)というのがそれ。
974デフォルトの名無しさん:2012/02/19(日) 17:17:07.80
>>968
こうじゃないのか?
hoge( &(cast(A)b) );
975デフォルトの名無しさん:2012/02/19(日) 17:17:44.02
なる、了解です
castで簡単に回避できる方が問題なのかな

Win32API の IUnknown** とかは const( IUnknown )*
に置き換えればよさげ?
976891:2012/02/20(月) 00:05:27.19
2.059 …だと!?
977デフォルトの名無しさん:2012/02/20(月) 03:56:38.48
うそつき!
978デフォルトの名無しさん:2012/02/20(月) 11:56:17.87
やっと自作ライブラリの2.058対応が終わった。
constの厳密化が地味に痛い。
979デフォルトの名無しさん:2012/02/20(月) 12:58:56.59
システムツール開発向けをうたわれても、言語が後方互換性を保証しないのでは採用できようはずもないな
980デフォルトの名無しさん:2012/02/20(月) 13:09:37.62
しかしPerl5やJavaScriptやPHPを使ってると
あり合わせで作ったツールに後方互換性を維持したせいで
軽く1万人年は無駄が発生してるんだろうなあと思うところはあるよ
981デフォルトの名無しさん:2012/02/20(月) 13:49:56.11
GC回りに関して、
ある特定の条件を満たすとデストラクタで直接廃棄リスト行きにできる条件ってあるだろうか。
pureみたいなコンパイラに与える属性として。
あとデストラクタで参照型とポインタはなるべくnullを代入しろってアドバイスが書かれてたけど
あれって自動化すると何か問題あるだろうか。
982デフォルトの名無しさん:2012/02/20(月) 14:11:11.78
983デフォルトの名無しさん:2012/02/20(月) 18:01:38.54
おつ!
984デフォルトの名無しさん:2012/02/20(月) 23:59:08.02
鬱!
985デフォルトの名無しさん:2012/02/21(火) 16:02:24.88
>>701
の変更で書き換えが大量に発生すると思っていたが、
思ったほどエラーは出なくて首をかしげていた。

> 2.057までは型名として、2.058以降は仮引数名として扱われるようになる
型名だと思った? 残念! 引数名でしたーーーwww
 というブービートラップか
986デフォルトの名無しさん:2012/02/21(火) 17:33:27.28
他の言語でよくやる、「適当な入力から別の言語のソースコードを作ってコンパイラに渡す」
みたいなことをDだけでできてこれは便利だと思うわー
987デフォルトの名無しさん:2012/02/21(火) 18:14:50.24
へ?
他の言語でも一応出来るでしょ?

'簡単に'実現できるとかいう意味なら同意できる…かな
988デフォルトの名無しさん:2012/02/22(水) 09:53:19.07
DはCTFE+文字列ミックスイン+高速コンパイルで回りがめちゃくちゃ早いのがいい
989デフォルトの名無しさん:2012/02/23(木) 01:25:40.34
>>982 乙。ちょっとどっちに書こうか迷ったんだけど聞いて。
1. dmd2.058 Windowsで
2. Dで書いたライブラリの中の クラス/構造体 テンプレート内の static this が実行されない、ただし
3. そのライブラリ内でインスタンス化されてない場合で、
4. そのライブラリを、自動生成された .di ファイルで import している時。
5. .di ファイルに static this の body を書き足せば実行される。

なんだけど、これバグなんじゃないか?
990デフォルトの名無しさん:2012/02/23(木) 01:28:36.33
むしろg++のコンパイルなんであんな遅いん…
991デフォルトの名無しさん:2012/02/23(木) 01:42:31.56
C++ Compilation Speed
http://drdobbs.com/blogs/cpp/228701711

コンパイラ開発者たちは頑張ってるけど、
C++仕様を満たすには最低でも3パス必要だとか、
プリプロセッサのせいで大量のソースを読み込む必要があるとか、
そういう話がつらつらと
992デフォルトの名無しさん:2012/02/23(木) 02:16:26.08
>>989
importだけして実体をリンクし忘れてるわけじゃなく?
993デフォルトの名無しさん:2012/02/23(木) 02:18:58.55
>>989
リンクエラーになるのが正しいと思う
使い方的には template mixin?

それどころかこんな問題もまだ残ってるけど
http://d.puremagic.com/issues/show_bug.cgi?id=5950
994デフォルトの名無しさん:2012/02/23(木) 03:19:45.43
>>989
di内に書き出されたテンプレートクラス/構造体には
問題のstatic thisが書き出されてないんだよね?
そのあとで「手書きでbodyを書きたせば」と言っているし。
dmdのバグだと思う。
995デフォルトの名無しさん:2012/02/23(木) 04:27:54.43
>>992
リンク忘れでは無い筈。ライブラリ内の他の関数は呼べてるし。

>>993
template mixin でも、明示的インスタンス化でも結果は同じだった。
クラス/構造体 じゃないテンプレート内に static this を置いても同じだった。
てか、get なんてあったんだな。なんか、以前似たような関数自作した記憶が…

>>994
書き出されていないといっても static this(); の宣言だけはされてる。
とりあえず body 書き足すので回避したけど、
テンプレート外の static this も .di ファイル内では同じく body のない宣言の状態で、
こっちは実行されてる。

レポートしようかと思うんだけど、 ttp://d.puremagic.com/issues/ になければ未発見ってことでいいんだよな?
996デフォルトの名無しさん:2012/02/23(木) 13:01:15.82
you レポートしちゃいなよ

かぶってて消されるのはよくある
997デフォルトの名無しさん:2012/02/24(金) 00:23:21.81
Dはowacon
998デフォルトの名無しさん:2012/02/24(金) 00:24:56.27
D先生の2.059にご期待ください!
999デフォルトの名無しさん:2012/02/24(金) 00:27:32.43
ほしゅしゅしゅしゅ
1000デフォルトの名無しさん:2012/02/24(金) 00:28:20.04
問題なく使えてるけど
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。