D言語 Part10
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/09/12(火) 07:25:50過去スレは >>2
■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)
■コンパイラ
ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
ttp://gdcmac.sourceforge.net/ (GDCのmac用バイナリ)
■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://dsource.org/ (dsource)
0002デフォルトの名無しさん
2006/09/12(火) 07:28:29Part 9 http://pc8.2ch.net/test/read.cgi/tech/1146656260/
Part 8 http://pc8.2ch.net/test/read.cgi/tech/1137068104/
Part 7 http://pc8.2ch.net/test/read.cgi/tech/1122912733/
Part 6 http://pc8.2ch.net/test/read.cgi/tech/1109933426/
Part 5 http://pc5.2ch.net/test/read.cgi/tech/1102785854/
Part 4 http://pc5.2ch.net/test/read.cgi/tech/1091185216/
Part 3 http://pc5.2ch.net/test/read.cgi/tech/1079068715/
Part 2 http://f3.aaacafe.ne.jp/~null/cache/1079280501.html
Part 1 http://pc5.2ch.net/tech/kako/1003/10036/1003674814.html
0003デフォルトの名無しさん
2006/09/12(火) 07:31:190004デフォルトの名無しさん
2006/09/12(火) 07:37:28ネイティブコンパイラというところは嬉しいけど
FrameWorkやIDEがまだ準備不足感があります
言語仕様を煮詰めなおしたり設計し直すと言った話も重要ですが
最近の開発スタイルからするとFrameWorkの拡充が急務であって
後者を優先しつつ(手遅れにならないように)前者についても
細かいところが改善されていくことを願います
0005デフォルトの名無しさん
2006/09/12(火) 19:52:41乙
0006デフォルトの名無しさん
2006/09/12(火) 21:53:55先ず、それを英語で云えるようになってから発言してね
0007デフォルトの名無しさん
2006/09/12(火) 23:30:28ttp://www.dsource.org/projects/build/
自動的にインポート関係を調べてコンパイル/リンクしてくれるツール。
ソースに、特定のpragma文を記述することで、コンパイル/リンクの制御ができる。
・Windows API (WindowsAPI用のヘッダファイル群)
ttp://www.prowiki.org/wiki4d/wiki.cgi?WindowsAPI
現在も進行中のプロジェクト。 最新バージョンは、
ttp://www.dsource.org/projects/bindings/browser/trunk/win32
ページの一番下、「Zip Archive」の部分からダウンロードできる。
0008デフォルトの名無しさん
2006/09/12(火) 23:37:500009デフォルトの名無しさん
2006/09/13(水) 00:45:35まずは言語に組み込むメリットとライブラリでは何故いけないのかを述べよ。
0010デフォルトの名無しさん
2006/09/13(水) 06:31:530011デフォルトの名無しさん
2006/09/13(水) 06:59:06ライブラリで良いならライブラリ組めよ。
0012デフォルトの名無しさん
2006/09/13(水) 08:44:200013デフォルトの名無しさん
2006/09/13(水) 09:14:16ほしいという理由を訊ねられているんだろうから、12は的外れだな。
0014デフォルトの名無しさん
2006/09/13(水) 12:25:030015デフォルトの名無しさん
2006/09/13(水) 12:44:55おまえ馬鹿だろ 行間読めよ
誰と誰の主張が同じかまとめてみよう
8:「言語ネイティブを希望」
9=10:「ライブラリで充分」
11=12:「ライブラリ組めよ」
こういう流れなんだから
11と12の意見がいかに的外れか分かるだろ
そうでなければ「言語ネイティブ」の意味を分かってない馬鹿
0016デフォルトの名無しさん
2006/09/13(水) 12:46:180017デフォルトの名無しさん
2006/09/13(水) 13:01:11事実的にも比喩的にも、11に「行間」はない。
0018デフォルトの名無しさん
2006/09/13(水) 13:19:12なんてライブラリで十分
しかも自分で組める程度のもの
人に希望してる暇があるなら、自分で書いたほうが早い
それともこの程度のこともできないような低能ですか
あー、そうですか
0019デフォルトの名無しさん
2006/09/13(水) 13:23:150020デフォルトの名無しさん
2006/09/13(水) 14:35:36|
| こうですか!?わかりません!
|
J
0021デフォルトの名無しさん
2006/09/13(水) 14:48:43>8は、基地外は放置してお話を再開していいよ。
単に標準ライブラリに追加でもいいならそう言い直しとけばOK。
そうじゃないなら追加の説明すれば問題なし。
0022デフォルトの名無しさん
2006/09/13(水) 15:25:21言語ネイティブでの表現なら、
(初期化)
any a[@] = [ "a", 'b', 123, [ "d", e ], [ "f": "f", "g": g, "h": 234] ];
[ "f": "f", "g": g, "h": 234]は、map-list表現(連想配列と言えば良い?)
(アクセス)
a[2] => 123
a[3] => [ "d", e ]
a[4]["h"] => 234
* typeof 演算子が必要になっちゃいますけどね。
標準ライブラリでの表現なら、
(初期化)
any_list a = new any_list( "a", 'b', 123, new any_list( "d", e ), new any_maplist( "f": "f", "g": g, "h": 234) );
(アクセス)
a.get(2) => 123
a.get(3) => [ "d", e ]
a.get(4).get("h") => 234
なんて書き方になるのかな?
0023デフォルトの名無しさん
2006/09/13(水) 15:32:010024デフォルトの名無しさん
2006/09/13(水) 15:36:100025デフォルトの名無しさん
2006/09/13(水) 15:46:59木構造のリスト表現 って一般用語だと思ってたのですが、一々説明しなきゃいけないのですか?
0026デフォルトの名無しさん
2006/09/13(水) 16:20:49代入だけ書いて、木構造だとわかれよ!は無理ありすぎ。
0027デフォルトの名無しさん
2006/09/13(水) 16:23:46それって、JavaScriptのArrayオブジェクトみたなやつですよね?
格納するデータの型に、制約の無い配列。
もしライブラリにするして・・・
どんな型でも返せる関数ってD言語でどう書くんですか? 教えてD言語のエロイ人。
0028デフォルトの名無しさん
2006/09/13(水) 16:45:310029デフォルトの名無しさん
2006/09/13(水) 16:53:150030デフォルトの名無しさん
2006/09/13(水) 16:55:23木構造のリスト表現、という言葉にその言葉以上の意味がなければ
ただのCompositeパターンで済む話だと思うんだが。
念のため"木構造のリスト表現"でぐぐったが、全13件中1件しか表示
されない、といった具合だったよ。
そうじゃなくて、基本データ型まで含めた任意の型のデータを突っ込めて、
なおかつ実行時に型一致をチェックするような型を仕様に含めてくれ、
という話なんだろうか。
そうすると木構造のリスト表現云々とは本質的に別の話だよな。
はたまた単に構文が欲しいだけなのか。Lisp周辺のようにリストを扱うのに
便利な関数群を実装して欲しいのか。なにを望んでるんだろう。
0031デフォルトの名無しさん
2006/09/13(水) 16:57:54Objectの配列にしかみえねぇじゃん。
0032デフォルトの名無しさん
2006/09/13(水) 17:06:51[[['abc'],['def']],[['uvw'],['xyz']]]
みたいなことをしたいんじゃなかろうまいか
0033デフォルトの名無しさん
2006/09/13(水) 17:10:13それだ!
0034デフォルトの名無しさん
2006/09/13(水) 17:12:54木構造関係ないやん・・・。
0035デフォルトの名無しさん
2006/09/13(水) 17:32:0900368,22じゃないけど
2006/09/13(水) 17:38:040037デフォルトの名無しさん
2006/09/13(水) 18:03:10GJ!!
0038デフォルトの名無しさん
2006/09/13(水) 21:53:49まともな話題を投下してくれ
0039デフォルトの名無しさん
2006/09/13(水) 22:07:040040デフォルトの名無しさん
2006/09/13(水) 22:37:28つ hash table
0041デフォルトの名無しさん
2006/09/13(水) 22:45:590042デフォルトの名無しさん
2006/09/13(水) 23:37:040043デフォルトの名無しさん
2006/09/13(水) 23:44:36まぁ、visual族は basic c++ j++ って決まってたしな
0044デフォルトの名無しさん
2006/09/14(木) 03:15:270045デフォルトの名無しさん
2006/09/14(木) 03:48:470046デフォルトの名無しさん
2006/09/14(木) 03:53:42せっかくのネイティブコンパイラなんだから
.NET 環境が無くても動作することが必須だけど。
0047デフォルトの名無しさん
2006/09/14(木) 06:20:170048デフォルトの名無しさん
2006/09/14(木) 10:41:15void hoge( lazy uint tgt ); に
hoge( timeGetTime() );
ってしてから気付いた。
0049デフォルトの名無しさん
2006/09/14(木) 11:12:470050デフォルトの名無しさん
2006/09/14(木) 11:22:410051デフォルトの名無しさん
2006/09/14(木) 12:01:590052デフォルトの名無しさん
2006/09/14(木) 12:17:150053デフォルトの名無しさん
2006/09/14(木) 13:40:34何から何まで導入するんだな。
0054デフォルトの名無しさん
2006/09/14(木) 14:14:16呼び出し側は普通の値渡しとおなじ構文だし。
0055デフォルトの名無しさん
2006/09/14(木) 14:50:450056デフォルトの名無しさん
2006/09/14(木) 15:18:120057デフォルトの名無しさん
2006/09/14(木) 16:28:310058デフォルトの名無しさん
2006/09/14(木) 19:34:49手続きの副作用を認識出来るのは関数を使う側、つまり呼び出し側だろ。
もはや、ある式が必ず実行されるかすら、保証されなくなる。
当然、その分プログラマの神経を削る種が増えるわけだ。
Haskell見て興奮した口なんだろうけど、それとこれは場合が違いすぎるわけで…。
0059デフォルトの名無しさん
2006/09/14(木) 19:42:490060デフォルトの名無しさん
2006/09/14(木) 19:43:17仮に、同じ考えの人が居た場合は
newsgroupで、そういう意見が出てるんじゃないの?
0061デフォルトの名無しさん
2006/09/14(木) 19:48:430062デフォルトの名無しさん
2006/09/14(木) 20:05:52必ず実行したい式をそこに書きいれるのはどうかと思う。
それに、関数の作用も分からずに使うわけ?
その関数の作用が分かればそれが遅延評価だって事にもすぐ気付くだろうに。
でも実際は delegate だけで十分だよな・・・。
lazyってなんのためにあるんだろうか。
「実用的」な言語なら少しの簡単さを生む代わりにバグを生みやすくする必要は無かったと思う。
0063デフォルトの名無しさん
2006/09/14(木) 20:12:17そういう、決まりきった事をコードに書くのは微妙にストレスを感じる。
そういう意味でD言語の何でもかんでも言語に追加するという思想は俺は好きだな。
006458
2006/09/14(木) 20:17:04>>62
ということは、気づかなくてはならない、ってことでは?
それだけでドキュメント必須になり、過去に使った関数さえ記憶の状態によっては過ちを犯す事がありえる。
遅延評価を言語要素として持っている限り、いかなる場所でのいかなる式が
遅延評価されてしまう可能性があるわけで。
ひょっとしたら、必ず実行されることが必要かも分からない、副作用のある式が遅延評価されてしまうかも知れない。
0065デフォルトの名無しさん
2006/09/14(木) 20:27:09D言語の感想を言い合い罵倒するスレ part10
になりました
引き続きお楽しみください ...
0066デフォルトの名無しさん
2006/09/14(木) 20:34:130067デフォルトの名無しさん
2006/09/14(木) 20:39:37>それだけでドキュメント必須になり、過去に使った関数さえ記憶の状態によっては過ちを犯す事がありえる。
それは、lazyに限ったことじゃないよね。だんだん的が外れてきてる。
要するに、評価されたりされなかったりすることがあるから、
間違いがあったときに、わかりにくいってのが問題なんでしょ。
0068デフォルトの名無しさん
2006/09/14(木) 20:50:20元々俺が問題にしていることは、最初のレスの通り
この言語要素がプログラマの負担になるということなんだが。
lazyに限った、限らないの話ではない。
それが確実にプログラマにメリットよりも大きなデメリットをもたらすと言いたかっただけ。
0069デフォルトの名無しさん
2006/09/14(木) 21:01:01lazyに限らんいまさらな話だから
> メリットよりも大きなデメリット
なんて大げさなものじゃないだろ、
という話じゃないかな。
0070デフォルトの名無しさん
2006/09/14(木) 21:06:00出直してくる。
0071デフォルトの名無しさん
2006/09/14(木) 21:45:25けど>>57のおかげでlazyたんのことが少しわかった気がした(`・ω・´)
呼び出し側から「遅延評価されること」を意識する必要がない状況を考えてみたら、少なくとも、
関数の引数を除く、すべての環境(いわゆるクロージャが持ち運べる環境の意味での環境)
に影響を受けない/与えないような関数なら>>57の言うとおりだと思った
逆に、 void hoge(lazy uint tgt) { ... } がメンバ関数であってメンバ変数を書き換える関数だったり、
コンソールに文字を出力する関数だったら>>57の言うことは成り立たないと思った
0072デフォルトの名無しさん
2006/09/14(木) 22:22:370073デフォルトの名無しさん
2006/09/15(金) 08:31:43このスレの住人ならさ
0074デフォルトの名無しさん
2006/09/15(金) 08:45:05夢板はID制じゃねーでげすよぉおおおおお。
最初のレスなんてわからんでごじぇーますよ、お代官様。
0075デフォルトの名無しさん
2006/09/15(金) 15:29:49だって遅延評価って、ある条件下で評価しない代わりに高速化を望める仕様なんでしょ?
他に使い道があろうが、他の使い道はあんまり推奨してないんでは?
0076デフォルトの名無しさん
2006/09/15(金) 15:33:280077デフォルトの名無しさん
2006/09/15(金) 15:36:100078デフォルトの名無しさん
2006/09/15(金) 15:41:06全然流れと関係なくてすまん。
0079デフォルトの名無しさん
2006/09/15(金) 15:41:37高速化は関係ないでしょ
0080デフォルトの名無しさん
2006/09/15(金) 15:45:57&&とか||とか?:の利点と同じ。
0081デフォルトの名無しさん
2006/09/15(金) 15:48:320082デフォルトの名無しさん
2006/09/15(金) 15:48:470083デフォルトの名無しさん
2006/09/15(金) 17:01:19反語のつもりですた
ないよねぇ
0084デフォルトの名無しさん
2006/09/15(金) 18:06:51え?無いの?
本家では「パフォーマンスの向上に繋がる」ってあるけど
0085デフォルトの名無しさん
2006/09/15(金) 18:20:13評価を行わないことによる速度の向上のことであって、
べつにdelegate渡しが高速にできるとか、そういういみじゃないぞ。
だいぶ勘違いしているようだけど。
0086デフォルトの名無しさん
2006/09/15(金) 18:46:33int manko(Chinko chn) {
if(todayIsKikenDay()) {
if(c.isHohke) return 0;
return c.siggeki();
}
}
manko((Chinko) createHuman("俺", SEX_NEWHALF).bodyParts.getParts("ちんこ"));
↑これが、
int manko() {
if(todayIsKikenDay()) {
Chinko c = (Chinko) createHuman("俺", SEX_NEWHALF).bodyParts.getParts("ちんこ");
if(c.isHohke) return 0;
return c.siggeki();
}
}
manko();
こんな感じになるんぢゃない?
スコープとかスレッドとか考えるとこんな簡単じゃないのかも知れない。
0087デフォルトの名無しさん
2006/09/15(金) 18:48:03遅延評価とはある条件下で評価をしないことによって高速化を望む手法なんだよ。
0088デフォルトの名無しさん
2006/09/15(金) 20:09:060089デフォルトの名無しさん
2006/09/15(金) 21:16:14「条件来るまで評価しない、条件来なきゃ評価されない」
使用意図っつーか視点が違うだけで2つとも同じ主張に見える。
0090デフォルトの名無しさん
2006/09/15(金) 22:31:17lazyな引数が渡された場合、
その関数内で(引数が)最初に評価される式が現れるまで、評価はされない。
というだけの話を、何でややこしく書くんだろう。
0091デフォルトの名無しさん
2006/09/15(金) 22:57:20遅延評価する事により簡潔に書けることがある
という点の方が重要なんじゃないの?
0092デフォルトの名無しさん
2006/09/15(金) 23:36:28なんだかlazyって論理型言語の推論機構っぽいですね
0093デフォルトの名無しさん
2006/09/16(土) 01:13:39その発言が何を生むのか分からない。教えてエロイ人
0094デフォルトの名無しさん
2006/09/16(土) 01:39:48遅延評価と推論機構ってなんか関係あんの?
0095デフォルトの名無しさん
2006/09/16(土) 03:30:26読んでれば普通に >>87 と >>90 だけでも lazy が遅延評価だって分かるぞ。
0096デフォルトの名無しさん
2006/09/16(土) 08:17:38遅延評価の何らかの性質が推論機構に似ていると言っているだけで
>>93-94はどういう性質が似ているの?という質問だと思う
で、どこがどう似ているのか教えてエロい人
0097デフォルトの名無しさん
2006/09/16(土) 12:03:12俺の見た目で、lazyは「必要なときに必要なだけ実行される」ように見えたから、これは「必要な」という推論がされているように感じただけ
なんだが('A`)
0098デフォルトの名無しさん
2006/09/16(土) 12:50:44に、
>最大で一度しか計算されない事が保証されている。
ってあるけど、lazyは言語側でキャッシュしてくれるの?
0099デフォルトの名無しさん
2006/09/16(土) 13:25:540100デフォルトの名無しさん
2006/09/16(土) 13:29:49してくれません。今のところ。
現在の実装では、単純にdelegateを呼んでるだけなので。
void func(lazy int i) { if (i == 0) ... }
というのは、
void func(int delegate() i) { if (i() == 0) ... }
って感じだから。
0101デフォルトの名無しさん
2006/09/16(土) 14:00:05遅延評価は仕様じゃないし、lazy==遅延評価でもない。
関数の引数に対して遅延評価を行う手段の一つがdelegateで、その別表記がlazy。
0102デフォルトの名無しさん
2006/09/16(土) 14:57:06bool func2(lazy int i) { return (i() == 0); }
これってどっちも可なんだ。
まあ確かにlazyって引数情報が知らされないからトーゼンなんだね。
0103デフォルトの名無しさん
2006/09/16(土) 15:03:53?
引数の無い関数の括弧を省略しただけでは?
0104デフォルトの名無しさん
2006/09/16(土) 17:05:30へっ?略できんの?シランカッタスマンカッタorz
0105デフォルトの名無しさん
2006/09/16(土) 18:03:580106デフォルトの名無しさん
2006/09/16(土) 18:57:020107デフォルトの名無しさん
2006/09/16(土) 19:05:32char[80]buf;
gets = buf;
dout.writeLine = buf;
0108デフォルトの名無しさん
2006/09/16(土) 19:13:17は
buf.gets();
で行こう
0109デフォルトの名無しさん
2006/09/16(土) 20:27:18あ き ら め ろ
0110デフォルトの名無しさん
2006/09/16(土) 21:16:01なんのはなし?
0111デフォルトの名無しさん
2006/09/17(日) 01:38:50なんだdelegateなのか
0112デフォルトの名無しさん
2006/09/17(日) 04:22:11なんだ知らなかったのか
0113デフォルトの名無しさん
2006/09/17(日) 05:08:42delegate(==lazy、>>101, >>112いわく)と遅延評価ってぜんぜん別物じゃん。
知らなかったって言われても。
Dのlazyはつまり、関数型言語の純粋な遅延評価とはまた違うわけね。
0114デフォルトの名無しさん
2006/09/17(日) 08:31:300115デフォルトの名無しさん
2006/09/17(日) 09:00:480116デフォルトの名無しさん
2006/09/17(日) 11:33:26でも、関数型言語に備わっているのと比べると形も違うし値をキャッシュしない等の不備もあるね。
0117デフォルトの名無しさん
2006/09/17(日) 11:52:12人はそれを別物と呼ぶ
”車はエンジンを使って動く”でしょ、だから車はエンジンなんだよ。
みたいな。
0118デフォルトの名無しさん
2006/09/17(日) 11:58:01”車はエンジンを使って動く”でしょ、だから車はエンジンと関係してるんだよ。
みたいな。
0119デフォルトの名無しさん
2006/09/17(日) 11:58:570120デフォルトの名無しさん
2006/09/17(日) 12:12:51釣りじゃないと思うから
(´д`)言い方で全てが決まるんだよボケ
0121デフォルトの名無しさん
2006/09/17(日) 12:17:190122デフォルトの名無しさん
2006/09/17(日) 12:29:39・lazyの実装に暫定的にdelegateを使っていて将来的には
結果がキャッシュされるちゃんとした遅延評価になると思っている
の違いなんじゃないの?
0123デフォルトの名無しさん
2006/09/17(日) 12:53:00お前"の"バカな言い方で全てを決めるなボケ
0124デフォルトの名無しさん
2006/09/17(日) 12:55:100125デフォルトの名無しさん
2006/09/17(日) 14:58:580126デフォルトの名無しさん
2006/09/17(日) 16:08:010127デフォルトの名無しさん
2006/09/17(日) 16:17:40・引数の式に関数を適用するのが先か
とは別に、
・式の値はキャッシュされるか否か
ということがある。
最初に出来の悪い比喩を始めた116は死刑でいいけど、
そいつを除いても、一言に遅延評価といってもいろいろ
あるってことを見失ってるやつがいるように思う。
おまけに、遅延評価である、というのはそれを言語がサポート
するかプログラマが実装するかなんてことは問わないしな。
0128デフォルトの名無しさん
2006/09/17(日) 17:13:380129デフォルトの名無しさん
2006/09/17(日) 17:19:00透明してるんで見えないのでてst
0130デフォルトの名無しさん
2006/09/17(日) 17:22:010131デフォルトの名無しさん
2006/09/17(日) 17:25:36純粋な遅延評価でないものを、遅延評価だなんて言うなってことだよ。
何も分かってない人を相手にするのはほんと疲れる。
0132デフォルトの名無しさん
2006/09/17(日) 17:36:23> 純粋な遅延評価でないものを、遅延評価だなんて言うな
お断りだ
0133デフォルトの名無しさん
2006/09/17(日) 18:13:48瞬く間に自分の馬鹿が判明して整合性にてんやわんやみたいな。
0134デフォルトの名無しさん
2006/09/17(日) 18:15:33遅延評価というモデルを使うのがlazyで把握?
0135デフォルトの名無しさん
2006/09/17(日) 20:34:00実際の計算を値が必要になるまで行わないこと(即ち遅延評価)は関数の引数に対しても
delegateを使えば今までも実現できてたけど、引数に渡す{ return 式; }の文をwrapしたいとかでlazyが出来た。
個人的には前バージョンのdelegateへの暗黙変換だけの方が良かったな。
delegateがlazy表記になっただけで誤解してる人がいっぱい湧いてきたし。
0136デフォルトの名無しさん
2006/09/17(日) 21:30:09>遅延評価とは「計算機科学における手法の一つ」
>「評価しなければならない値が存在するとき、実際の計算を値が必要になるまで行わないこと」
って書いてあるな。
遅延評価は手法だそうだからそれを実装さえすれば「遅延評価」と呼べそうな気がするな。
それともこれが「純粋じゃない遅延評価」で、関数型言語における遅延評価が「純粋な遅延評価」とでもいうのかな?
計算機科学における遅延評価ありきで、それを関数型言語が採用しているみたいだけど。
0137デフォルトの名無しさん
2006/09/17(日) 21:38:210138デフォルトの名無しさん
2006/09/17(日) 21:39:280139デフォルトの名無しさん
2006/09/17(日) 23:16:48孤独な>>131を馬鹿にするのはやめろ。
0140デフォルトの名無しさん
2006/09/17(日) 23:33:380141デフォルトの名無しさん
2006/09/17(日) 23:37:230142デフォルトの名無しさん
2006/09/17(日) 23:52:41悪い、>>140はアホにいちいち構うのは止そうぜ、って意味
0143デフォルトの名無しさん
2006/09/18(月) 05:42:57でおk?
0144デフォルトの名無しさん
2006/09/18(月) 06:51:14副作用があったらキャッシュ不可能ですよ。
0145デフォルトの名無しさん
2006/09/18(月) 09:40:550146デフォルトの名無しさん
2006/09/18(月) 10:32:38遅延評価はdelegateを使うと表現しやすくなる程度じゃないのか?
それだとやっぱり「delegateを使うと自動的に遅延評価ができる」になってしまうと思われ
0147デフォルトの名無しさん
2006/09/18(月) 10:51:05遅延評価的な物、って何やねん。
何で変な喩えにするのかなあ。
0148デフォルトの名無しさん
2006/09/18(月) 13:26:370149デフォルトの名無しさん
2006/09/18(月) 14:01:26その節は116様につきましては大変申し訳ありませんでした。
0150デフォルトの名無しさん
2006/09/18(月) 14:24:53ご苦労さんw
0151デフォルトの名無しさん
2006/09/18(月) 14:38:45まぁ、根拠もなく調子こいてたことがこれだけ明らかになっちゃね。
0152デフォルトの名無しさん
2006/09/18(月) 15:37:25116の馬鹿さ加減がこうも明らかになっちゃね。
0153デフォルトの名無しさん
2006/09/18(月) 16:49:57常人ではここまで浮くことはできない。
0154デフォルトの名無しさん
2006/09/18(月) 19:46:190155デフォルトの名無しさん
2006/09/18(月) 19:52:09「Dって遅延評価無いの?」
「っ (delegate|lazy)」
でおkじゃね?
0156デフォルトの名無しさん
2006/09/18(月) 19:56:56bit body break byte
case cast catch cent char cfloat cdouble class const continue creal
dchar debug default delegate delete deprecated do double
else enum export extern
false final finally float for foreach function
goto
idouble ifloat if import in inout instance int interface invariant is ireal
long
mixin module
new null
out override
package pragma private protected public
real return
short static struct super switch synchronized
template this throw true try typedef typeid typeof
ubyte ucent uint ulong union unittest ushort
version viod volatile
wchar while with
まだあるかな?
0157デフォルトの名無しさん
2006/09/18(月) 20:00:12・遅延評価は手法である
・Dは遅延評価を仕様に定義している言語ではない
「Dって遅延評価無いの?」
「ない」
「Dって遅延評価実現できないの?」
「っ&& || ?: delegate lazy」
0158デフォルトの名無しさん
2006/09/18(月) 20:06:25まだやってんの?
目的は何なの?
0159デフォルトの名無しさん
2006/09/18(月) 20:07:580160デフォルトの名無しさん
2006/09/18(月) 20:14:25それはmemoize
lazyとは別の最適化手法
0161デフォルトの名無しさん
2006/09/18(月) 20:15:05脳内定義を広めようと必死だな
0162デフォルトの名無しさん
2006/09/18(月) 20:25:25確かにプログラマのの実装によって遅延評価は実現できるんだけど、
関数型言語が持っているような『純粋な遅延評価』なんてDにはありませんよ?
&& || ?: delegate lazy
↑を使って遅延評価を実現することは出来るけどこれらは遅延評価そのものではないよ。
0163デフォルトの名無しさん
2006/09/18(月) 20:30:17lazy, iftype, scope, on_scope_exit, on_scope_failure, on_scope_successが無い。
instanceは違うと思う。
あとbitの代わりにbool。
0164デフォルトの名無しさん
2006/09/18(月) 20:32:16on_scope_exit, on_scope_failure, on_scope_successは廃止にならなかった?
0165デフォルトの名無しさん
2006/09/18(月) 20:35:32deprecatedだけど、一応まだ予約語。
その名前の変数とかは定義できない。
0166デフォルトの名無しさん
2006/09/18(月) 20:39:01そうだったのか。知らなかった。
>>160
lazyとは違うけどlazy+連想配列を使ったキャッシュで関数型言語の遅延評価と同じになるっしょ?
0167デフォルトの名無しさん
2006/09/18(月) 20:39:47言語仕様に「これがD言語での遅延評価です」ってあるわけじゃないけど
実現はできるという
不毛な主張だと思うよ
「遅延評価」の定義を明確に曖昧なく決定したいなら
自分で細部まで考えてどこか標準化してくれそうな団体に勝手に提案なりしてください
既に標準仕様があるならそれを晒すだけでいいけど
「なるほどそうなんだね」で終わるから
0168デフォルトの名無しさん
2006/09/18(月) 20:43:58当然>>143>>155当てだよね?
0169デフォルトの名無しさん
2006/09/18(月) 20:44:50『純粋な遅延評価』って何?
何をもって純粋と呼ぶのか正確な定義を頼む。
0170デフォルトの名無しさん
2006/09/18(月) 20:46:00「純粋な遅延評価」って何ですか?
0171デフォルトの名無しさん
2006/09/18(月) 20:46:17知らない。
>>113と>>131に訊いて。
0172デフォルトの名無しさん
2006/09/18(月) 20:47:15お前の脳内定義は聞き飽きたから、その定義が
世の中一般の話では狭すぎるってことにはよ気付け。
遅延評価の話するたびに出てこられたらいちいちうざくてかなわん。
0173デフォルトの名無しさん
2006/09/18(月) 20:53:40ちがうよ
ずっとlazyを遅延評価と呼ぶことに過剰アンチ反応をしているヤツ
0174デフォルトの名無しさん
2006/09/18(月) 20:55:17わかった。
曰く世の中一般の話では狭すぎる定義解説はもうしない。
だがどんだけlazyが誤解されてたかもう一度スレを読み直せ。
まずはlazy==遅延評価でないってところから解説しなきゃならんひどい有様だったぞ。
0175デフォルトの名無しさん
2006/09/18(月) 20:59:58何だかよく分からないけど
コカ・コーラ(ホット)置いときますね
0176デフォルトの名無しさん
2006/09/18(月) 21:01:210177デフォルトの名無しさん
2006/09/18(月) 21:12:52まだ言ってるよこの人
0178デフォルトの名無しさん
2006/09/18(月) 21:27:23まあ、lazyって便利だね。でいいんじゃないか?
0179デフォルトの名無しさん
2006/09/18(月) 21:27:540180デフォルトの名無しさん
2006/09/18(月) 21:29:570181デフォルトの名無しさん
2006/09/18(月) 21:30:12But lazy expressions could accept delegates.
http://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D&artnum=41633
0182デフォルトの名無しさん
2006/09/18(月) 21:30:340183デフォルトの名無しさん
2006/09/18(月) 21:32:01メチャクチャ理論ここに極まれりって感じだな。
0184デフォルトの名無しさん
2006/09/18(月) 21:38:43>>134-136
0185デフォルトの名無しさん
2006/09/18(月) 21:54:06> Lazy 引数は関数が呼び出されるときに評価されるのではなく、
> 関数の中で引数が使われる時点で初めて評価されます。
って書いてある。
lazyキーワードを使うと、lazy引数になるから、遅延評価を行える。
lazy引数の評価は遅延評価。
D言語でのlazyっつーのは遅延評価の仕様のひとつ。
というのは日本人でなくてもみな承知しているんだが、
なぜかlazyは遅延評価じゃないと言い張るアホが一人いる。
いいかげん自分の定義を見直せって。
0186デフォルトの名無しさん
2006/09/18(月) 22:05:11「lazyで遅延評価が実現できる」は真だけど「lazyは遅延評価である」は偽だよね。
もし「lazyは遅延評価である」が真なら
lazyはdelegateの構文糖なわけだから「delegateが遅延評価である」も真になる。
delegateは機能が制限されたclosureなわけだから「closureが遅延評価である」も真になる。
でもclosureを備えたjavascriptとかrubyとかpythonみたいな言語が
「遅延評価を備えている」という風にいわれているのは今まで聴いたことがない。
0187デフォルトの名無しさん
2006/09/18(月) 22:11:00言葉遊びは別のところでやってくれ不快だ。
0188デフォルトの名無しさん
2006/09/18(月) 22:12:440189デフォルトの名無しさん
2006/09/18(月) 22:15:06>lazyキーワードを使うと、lazy引数になるから、遅延評価を行える。
>lazy引数の評価は遅延評価。
>D言語でのlazyっつーのは遅延評価の仕様のひとつ。
ここまでは当然承知してる。
>なぜかlazyは遅延評価じゃないと言い張る
問題はここだったのだがこれは漏れが>>134の認識だったからだ。
「lazy==遅延評価の仕様即ちlazy==遅延評価」という認識の人が漏れの認識を曲げられないのと同じで
漏れも「lazy==遅延評価の仕様即ちlazy==遅延評価」という人の認識を曲げられるわけが無い罠。
うん、憑物が落ちた。
これについては認識の問題だし水掛け論にしかならんよな。本当に不毛だった。
0190デフォルトの名無しさん
2006/09/18(月) 22:18:09コカコーラは飲物である
飲物は液体である
よって液体はソフトドリンクである☆
0191デフォルトの名無しさん
2006/09/18(月) 22:27:20A∈Bと解釈する人と
A≡Bと解釈する人の不毛な争い
0192デフォルトの名無しさん
2006/09/18(月) 22:33:09上でdelegateはclosureの制限がかかったもの
って書いてますけど具体的にはどういう違いがあるんですか?
0193デフォルトの名無しさん
2006/09/18(月) 22:33:45> lazyはdelegateの構文糖なわけだから
実装がdelegateだろうってだけで、delegateに代入できたりはしないよ。
そもそもdelegateと違って引数のパラメータ指定子だしな。
それでなくとも、
> もし「lazyは遅延評価である」が真なら
> lazyはdelegateの構文糖なわけだから「delegateが遅延評価である」も真になる。
lazyという表現がされる場合はdelegateという表現と意味合いも変わってくるよね。
だから、delegateが云々は真になるとは限らない。
今回の場合は、delegateは引数の遅延評価機構としてのものではないから偽だね。
delegate自体は遅延評価されない。
>>189
単にお前が間違ってるだけ。認識云々じゃなくて現実を見よう。
0194デフォルトの名無しさん
2006/09/18(月) 22:36:21lazyが遅延評価に属するかどうかは実装次第。
0195デフォルトの名無しさん
2006/09/18(月) 22:41:28お前そんな馬鹿なこと言ってないで192に答えてやれよ
0196デフォルトの名無しさん
2006/09/18(月) 22:45:47>>186は漏れじゃない。
>>189の認識は現D言語の仕様じゃ曲がらん。
間違ってるわけじゃなくて>>191なんだよ。不毛な水掛け論。
0197デフォルトの名無しさん
2006/09/18(月) 22:57:500198デフォルトの名無しさん
2006/09/18(月) 22:57:59Lazyと遅延評価の定義を出し合えば良いだけだと思う。
なんで、それをしないで、喧嘩してるのか分からない。
最近この手の文系議論が多くて嫌。
0199デフォルトの名無しさん
2006/09/18(月) 23:04:42>>135
遅延評価:
ttp://ja.wikipedia.org/wiki/%E9%81%85%E5%BB%B6%E8%A9%95%E4%BE%A1
0200デフォルトの名無しさん
2006/09/18(月) 23:07:42ヘンテコな議論にならずに済んだのかな……
0201199
2006/09/18(月) 23:11:30ttp://www.kmonos.net/alang/d/lazy-evaluation.html
ttp://www.digitalmars.com/d/lazy-evaluation.html
0202199
2006/09/18(月) 23:18:55ttp://wpedia.search.goo.ne.jp/search/174829/%C3%D9%B1%E4%C9%BE%B2%C1/detail.html?mode=0
ttp://en.wikipedia.org/wiki/Lazy_evaluation
0203デフォルトの名無しさん
2006/09/19(火) 00:02:42このページによると、遅延評価の処理系にも2種類あって、
キャッシュが行われる「必要呼び(call by need)」と
行われない「名前呼び(call by name)」があるみたい。
となると、Dのlazyは「名前呼びの遅延評価」と言えるようなんだけど…
検証おながいしまつ
0204デフォルトの名無しさん
2006/09/19(火) 00:52:25その定義が加わればlazy引数を複数回評価しようが遅延評価に属するね。
というわけでスレ汚しすいませんでした。
0205デフォルトの名無しさん
2006/09/19(火) 01:36:100206デフォルトの名無しさん
2006/09/19(火) 02:35:19恐らく発端である >>48 に対して function 使えとは誰も言わないのか。
0207デフォルトの名無しさん
2006/09/19(火) 02:36:000208デフォルトの名無しさん
2006/09/19(火) 03:03:22sedつかった表現って受け入れられないよな(orz
0209デフォルトの名無しさん
2006/09/19(火) 07:59:00* Implemented Stewart Gordon's suggestions per D.bugs/3843.
* Added std.c.windows.stat.
* Added std.file.getTimes().
* Added support for multidimensional array allocation with NewExpression.
* Added array literals.
* std.format will now work with struct arguments as long as they define a char[] toString() member function.
>Added array literals.
キタ━━━━(゚∀゚)━━━━!!!!
0210デフォルトの名無しさん
2006/09/19(火) 08:05:570211デフォルトの名無しさん
2006/09/19(火) 08:18:39auto x = [1,2,3];
これが通るのが遺憾
auto x = ([1,2,3]);
0212デフォルトの名無しさん
2006/09/19(火) 08:28:470213デフォルトの名無しさん
2006/09/19(火) 08:35:19static assert (['0', '1', '2'] == ['0', '1', '2']);
static assert([0, 10, 100][1] == [2, 4, 6, 8, 10][4]);
static const int[]な変数に代入するとstatic assert通らなくなるが('A`)
0214デフォルトの名無しさん
2006/09/19(火) 08:37:29いや、後者は通る。
void main(char[][]args){
auto x = ([1,2,3]);
}
前者は配列リテラルじゃなくて静的配列の静的初期化。
で、autoで静的配列を宣言できないという制限に引っかかってエラーが起こっている。
0215デフォルトの名無しさん
2006/09/19(火) 09:05:560216デフォルトの名無しさん
2006/09/19(火) 09:08:29マジか。
良かったあんな致命的なバグ直って。
そういえばあのバグはdmcでも出るとか言ってた様な気がするけどそっちは直ったんだろうか。
0217デフォルトの名無しさん
2006/09/19(火) 09:34:02DMCの最終版は8/12なので、まだでしょうな。
0218デフォルトの名無しさん
2006/09/19(火) 11:38:120219デフォルトの名無しさん
2006/09/19(火) 12:02:510220デフォルトの名無しさん
2006/09/19(火) 17:46:170221デフォルトの名無しさん
2006/09/19(火) 18:23:26strs=["test","test2","test3"];
通らない…
0222デフォルトの名無しさん
2006/09/19(火) 18:26:30char[][] strs;
strs=[cast(char[])"test","test2","test3"];
0223デフォルトの名無しさん
2006/09/19(火) 18:30:08templateの引数にも使えないし…ってこれは静的配列の時からだろうけど。
0224デフォルトの名無しさん
2006/09/19(火) 20:54:27らくちんな方法。
strs = ["test"[], "test2", "test3"];
0225デフォルトの名無しさん
2006/09/19(火) 21:36:351. 配列リテラルはstaticな配列に解釈されます。
2. 配列の型は、最初の要素の型となります。
多次元配列のnew式での確保
char[][] strArray; // char型の動的配列の動的配列
strArray = new char[][10]; // char型の動的配列10要素を確保
strArray = new char[][](10); // 上と同意
0226デフォルトの名無しさん
2006/09/19(火) 21:54:08static assert(['0', '1', '2'] is ['0', '1', '2']); //通らない
assert(['0', '1', '2'] is ['0', '1', '2']); //実行時エラー
}
staticというよりconstなんじゃなかろうか。
0227デフォルトの名無しさん
2006/09/19(火) 21:59:28staticというと静的配列というよりstatic int[] a; とかそんな感じを受ける、
という話ね。
0228デフォルトの名無しさん
2006/09/20(水) 08:48:23英語かけないので、だれか提案してくれないか。。。。
おねがい。
0229デフォルトの名無しさん
2006/09/20(水) 08:51:4510進演算をネイティブにサポートしてるのって、COBOLだけっていうのが
不思議。言語に組み込むのがそんなに難しいの?というか、言語に組み込むのが
無茶苦茶難しいなら、逆に、ライブラリで対処してるのが異常(そんなに難しいんだったら
ライブラリ作るのも難しいと思う)とか思う。
言語設計者が10進演算器を嫌うのは何故?
0230デフォルトの名無しさん
2006/09/20(水) 09:43:150231デフォルトの名無しさん
2006/09/20(水) 10:12:14なんでもかんでも言語コアに組み込んで楽しい?
0232デフォルトの名無しさん
2006/09/20(水) 10:20:32その手の議論はいらない、10進演算器が「なんでもかんでもの範疇」という
論証してくれたら聞く。
0233デフォルトの名無しさん
2006/09/20(水) 10:22:26例えば .NET の各言語もネイティブにサポートしてたりするけどね。
(一見ライブラリによる対応に見えるが実際はネイティブのはず)
0234デフォルトの名無しさん
2006/09/20(水) 10:33:16>>233
それってsystem.decimal構造体のこと?
で、Dではそのうちでるんじゃないかと思ってるcent型が対応するのかな?
0235デフォルトの名無しさん
2006/09/20(水) 11:37:03そんなに必要なものなら人に頼ったり
こんなとこで何度も同じ話題をほじくり返し人の意見を聞かないでネチネチと愚痴る前に
辞書使って自分で訴えろよ、無能者。
0236デフォルトの名無しさん
2006/09/20(水) 11:59:02いやいや、前回聞いたときも、イラネって話は勢い良く書き込む人がいたのに、
理由を述べないから、聞きなおしてみただけで。罵倒する暇が有れば無視すりゃあ
良いのに(wとか思う。
いらない理由を述べられないのなら、黙ってたら良いのに。
0237デフォルトの名無しさん
2006/09/20(水) 12:04:450238デフォルトの名無しさん
2006/09/20(水) 12:06:16むしろ、コアに組み込む必要がないと思ってる側(D言語開発者含む)を説得するのはそっちの仕事だと思うが
要る理由・それがライブラリではいけない理由を述べよ(「俺が要るから」は無し)
別に元々あるものを削れと言ってるわけじゃないしな。
コアに組み込むほど使わんと思うから要らんと言ってるだけで。
0239デフォルトの名無しさん
2006/09/20(水) 12:16:51学生さんかなぁ?複素数型より、ニーズは高いんだけどね。
ニーズについて説得しなきゃならん人間に対して説得出来るとは思えないレベルの話。
よく哲学板で「何故人を殺しちゃいけないの?」スレが建ってるけど、
そんな質問する奴がおかしいので、これに対して説得してみるのは
面白いけど不毛。
0240デフォルトの名無しさん
2006/09/20(水) 12:24:03D使うのやめて、おとなしくCOBOLでも使ってればいい
それで全て解決だろw
クレ厨にDを使う資格はない
0241デフォルトの名無しさん
2006/09/20(水) 12:29:38importしなくても使えるとか?
0242デフォルトの名無しさん
2006/09/20(水) 12:36:200243デフォルトの名無しさん
2006/09/20(水) 12:37:56勤めてる人間か学生かしらんけど、ここに書いてること自体無意味なのが分かってるんだろうか?
言うことおかしいし書く場所違うしもうサッパリなんですが・・・
それとも本気なのかな?
となるとなお更手がつけられないよね
0244デフォルトの名無しさん
2006/09/20(水) 12:38:04「英語書けないから提案できない、誰か書いて」ってんならまず日本語で提案書いて
ここに書き込んでみてはどうだろう
誰かが訳してくれるかもしれん
0245デフォルトの名無しさん
2006/09/20(水) 12:44:230246デフォルトの名無しさん
2006/09/20(水) 13:16:22俺は使わないけれども、あってもいいなあと思う。個人的に。
0247デフォルトの名無しさん
2006/09/20(水) 13:40:40「必要性を感じない」
「使わない機能まで言語に組み込むことはない、ライブラリで十分」
と、理由述べているのに「理由を述べていない」とは
随分とご都合のいい解釈ですね。
あなたにとって都合の悪い意見は黙殺ですか。
ある意味すごいですね。
>>239
Dのユーザでは複素数より10進演算器のほうがニーズが高い根拠はどこにあるの?
参考までにいつ採られた統計でどこでそのような資料を確認できますか?(脳内資料?)
クレクレ言ってる人が必要とする理由を説くべきなのに
いらない理由を述べよとは随分と自分勝手な論理ですね。
0248デフォルトの名無しさん
2006/09/20(水) 13:47:24真性DQNを相手にマジになってもしょうがないよスレが荒れるだけ
0249デフォルトの名無しさん
2006/09/20(水) 13:50:270250デフォルトの名無しさん
2006/09/20(水) 14:03:39俺もほしい。
ライブラリという形で十分だけど。
Cのライブラリをbccでコンパイルして使ったりとか、
C++のライブラリをD用に書き直したりとかしたらいけるかなと思いつつも、
結局めんどくさくてやってない俺。
0251デフォルトの名無しさん
2006/09/20(水) 14:09:30大半は普通の演算で対応できるし、実務分野ごとに作りこむなら
ライブラリのほうが便利だし。
0252デフォルトの名無しさん
2006/09/20(水) 14:13:30意外と汎用性がないんじゃなくて、言語がサポートしないから、
汎用政の無い、作りこまなきゃならない10進演算が乱立してしまったんだと思う。
0253デフォルトの名無しさん
2006/09/20(水) 14:42:56こういう文脈で10進が出てくるときはBCDとかBigNum系列の事だよな?
0254デフォルトの名無しさん
2006/09/20(水) 14:43:53特定分野向け、といった感じか。専門性は物理演算エンジンみたいなもんかね。
0255デフォルトの名無しさん
2006/09/20(水) 14:49:380256デフォルトの名無しさん
2006/09/20(水) 14:54:500257デフォルトの名無しさん
2006/09/20(水) 14:57:22具体的にどんなことが出来るのか例を挙げて説明してくれ
0258デフォルトの名無しさん
2006/09/20(水) 14:58:200.1を十回足せば1になる。
0259デフォルトの名無しさん
2006/09/20(水) 15:05:440260デフォルトの名無しさん
2006/09/20(水) 15:11:55こういうことでしょ?
ここに書かれている通り
整数に直して計算すればいいだけの話じゃないの?
0261デフォルトの名無しさん
2006/09/20(水) 15:16:080262デフォルトの名無しさん
2006/09/20(水) 15:23:54なるほどね把握した
とりあえず、俺は要らないなぁ…
0263デフォルトの名無しさん
2006/09/20(水) 15:25:22えっ!!>>260で納得する人が何故ム板のしかもD言語スレにいるの?
0264デフォルトの名無しさん
2006/09/20(水) 15:37:10「要らない」なんて言って
0265デフォルトの名無しさん
2006/09/20(水) 16:04:48どうやら 多倍長整数 ってのが一般的な呼び方らしい。
0266デフォルトの名無しさん
2006/09/20(水) 16:08:240267デフォルトの名無しさん
2006/09/20(水) 16:10:37ぜんぜんちがいまーーーーーーーーしゅ。
0268デフォルトの名無しさん
2006/09/20(水) 16:17:40んでそのライブラリを紹介してやれば良いじゃん。
D板のみんなのためになると思うよ。
0269デフォルトの名無しさん
2006/09/20(水) 16:18:24この結果からは分からないが、小数も扱うことができる。
特に小数の計算を行うと、System.SingleやSystem.Doubleでは結果が狂う場合もあるが、
System.Decimalならずっと正確に計算できる。その代わり、計算は遅くなる。
スピードを取るか精度を取るかで選択されるべきものだろう。
0270デフォルトの名無しさん
2006/09/20(水) 16:20:22ちがうなら、どこかの解説ページURL希望。
0271デフォルトの名無しさん
2006/09/20(水) 16:22:48この程度なら自分言葉で言える。
多倍長整数は少数を扱えない。
扱うならいろいろしなきゃ駄目。→10進演算ライブラリ。
0272デフォルトの名無しさん
2006/09/20(水) 16:41:54ごみん
0273デフォルトの名無しさん
2006/09/20(水) 16:45:44四則演算・除余のほかにも、累乗など色々と要るんじゃないの?
10進演算の為だけに演算子追加するもなぁ…。
やっぱり、雛形になる10進演算ライブラリを元に、
欲しい機能を書き足す方が融通利くんじゃない?
0274デフォルトの名無しさん
2006/09/20(水) 18:47:57っていうか10進演算が必要だといった人は理由を言ってないよね。
言語に組み込む必要も一緒に述べてから、反応はそれからで良いから。
皆釣られすぎ。
0275デフォルトの名無しさん
2006/09/20(水) 18:50:23でも、ライブラリを進める奴って、>>260読んで納得したり、>>261を勧めるレベルだぜ。
>>260も>>261も間違っちゃいないが、小学生の算数レベルじゃん。
0276デフォルトの名無しさん
2006/09/20(水) 18:52:060277デフォルトの名無しさん
2006/09/20(水) 18:55:31じゃあ、複素数も要らないじゃん。
0278デフォルトの名無しさん
2006/09/20(水) 18:58:24Cとのバイナリレベルの互換性をある程度考えているDで複素数を外すのは難しい。
0279デフォルトの名無しさん
2006/09/20(水) 19:12:35頓珍漢と話すのは面倒だなぁ。。。
複素数型を使ってる人間と、10進演算器を必要としてる人間の数の違いが分かって無い。
怖いのは、0.1を10回たしても、1.0にならないのに気づかずに使ってるキチガイが、
これほど多い事だな。
0280デフォルトの名無しさん
2006/09/20(水) 19:18:22ライブラリじゃなくて言語仕様に含めたらどういう場面でどう便利になるのか
具体的にコードを示して説得してみなよ
0281デフォルトの名無しさん
2006/09/20(水) 19:20:59>1.0にならないのに気づかずに使ってるキチガイが、
>これほど多い
どこをどう読んだらそうなるんだ
0282デフォルトの名無しさん
2006/09/20(水) 19:22:42だから、何度も言ってるけど、>>275で指摘した問題点をクリアーした
レベルの人間相手じゃないと、無意味だってーの。
>>260や>>261をこの場で提示することが恥ずかしいって思える人じゃなきゃ
無理。
0283デフォルトの名無しさん
2006/09/20(水) 19:25:07D言語ユーザーには大して需要がないのは明らかだな。
需要があるのなら問題点をクリアできる人がもっといるはずだしな
0284デフォルトの名無しさん
2006/09/20(水) 19:26:560285デフォルトの名無しさん
2006/09/20(水) 19:27:550286デフォルトの名無しさん
2006/09/20(水) 19:31:35だから、黙ってろよ。馬鹿は。と、遠まわしに言ってるのにぃい。
いい加減恥ずかしくならないの?
0287デフォルトの名無しさん
2006/09/20(水) 19:38:36複素数の場合は、複雑怪奇なテンプレートによる構文を回避できるとか、
リテラルが自然な形で記述できるとか、最適化ができる可能性があるとかいうのが、
ドキュメントで触れられてる。
0288デフォルトの名無しさん
2006/09/20(水) 19:39:07ってかWalterに伝えないでここでぐだぐだ言っててもしかたないとおも。
0289デフォルトの名無しさん
2006/09/20(水) 19:40:22鏡を見てもちつけ
おまいに対する真摯なレスを見逃してるぞ
気に入らないレスに反応している場合じゃない
それでも見えないなら・・・もうここから去れ
おまいの期待するもんはここにはない
0290デフォルトの名無しさん
2006/09/20(水) 19:49:22見当たらない。要らない理由をこじつけてる以上の物が見当たらない。
0291デフォルトの名無しさん
2006/09/20(水) 19:51:500293デフォルトの名無しさん
2006/09/20(水) 20:26:03と、遠まわしどころか直接的に言われてるのにまだ吼えてる人がいるスレはここですね?
0294デフォルトの名無しさん
2006/09/20(水) 20:34:09お前がバカじゃないならWalterタソに自分で英語で伝えたら良いのに。
Walterタソに言わなきゃ、どんなに欲しがっても手に入んないぞ。言語機能としては。
あと、都合の悪いレスを「黙ってろよ、バカ」って言ってるように見えるけどそれはどうなんだろうね。
0295デフォルトの名無しさん
2006/09/20(水) 20:37:00D D D D DEN♪
0296デフォルトの名無しさん
2006/09/20(水) 20:40:550297デフォルトの名無しさん
2006/09/20(水) 20:43:07せめて>>286は反応してやりなよ。
0298デフォルトの名無しさん
2006/09/20(水) 20:43:53そいつは真摯なレスを頭に血が上って見逃してるんじゃなくて、
自分の言葉で必要性を説明すると突っ込まれるのが怖いから
冷静に「分かってる振り」をしてるだけだってのは、ここまでの
様子をみりゃ一目瞭然だろ。
という人格攻撃が対話中断の態度として気に入らないとしても、
そいつがこれ以上情報や意見を出せないことは明らかだろう。
だから、この話が進むことはないし、この話が続くとしたら"構って
ちゃん"のご機嫌とり以上の内容はない。
話題を振ってくる人間のめぐり合わせが悪かったと思って、
これを雑談のネタにするのはすっぱり諦めなよ、みんな。
0299デフォルトの名無しさん
2006/09/20(水) 20:57:41なるのはプログラマの常識だから多倍長整数とか外したこといってた
奴は恥ずかしさで悶え死んだ方がいいぞ
0300デフォルトの名無しさん
2006/09/20(水) 21:00:440301デフォルトの名無しさん
2006/09/20(水) 21:08:43日本語でおk
0302デフォルトの名無しさん
2006/09/20(水) 21:41:27今のままで使い所あるんだろうか。
void main(){
int[][5] array;
array[]=[0,1,2];//
array[2][0]=3;
foreach(a;array){
foreach(b;a){
printf("%d",b);
}
}
}
0303デフォルトの名無しさん
2006/09/20(水) 21:51:570304デフォルトの名無しさん
2006/09/20(水) 22:09:09嫌っていうかopSliceの仕様からしてしょうがないんじゃない?
0305デフォルトの名無しさん
2006/09/20(水) 22:44:39void main()
{
int[] ary1 = ([0] ~ [1]);
foreach (v; ary1){ printf("%d\n", v); }
int[] ary2 = ([2, 3] ~ [4]);
foreach (v; ary2){ printf("%d\n", v); }
int[] ary3 = ([5] ~ [6]);
foreach (v; ary3){ printf("%d\n", v); }
}
0306デフォルトの名無しさん
2006/09/20(水) 23:52:31ary1.length が 0
ary2.length が 4
ary3.length が 5
になってるね。
0307デフォルトの名無しさん
2006/09/20(水) 23:55:29void main()
{
printf("ary1\n");
int[] ary1 = ([0] ~ [1]);
foreach (inout v; ary1){ printf("%d ", &v); }
printf("\nary2\n");
int[] ary2 = ([2, 3] ~ [4]);
foreach (inout v; ary2){ printf("%d ", &v); }
printf("\nary3\n");
int[] ary3 = ([5] ~ [6]);
foreach (inout v; ary3){ printf("%d ", &v); }
}
0308デフォルトの名無しさん
2006/09/21(木) 00:00:09むしろ今からバグ取り段階か。
0309デフォルトの名無しさん
2006/09/21(木) 00:03:01しばらくすると安定してくるから今は次バージョン待ちだな。
0310デフォルトの名無しさん
2006/09/21(木) 00:20:340311デフォルトの名無しさん
2006/09/21(木) 00:20:480312デフォルトの名無しさん
2006/09/21(木) 10:45:41それはともかく、dupを使うべきときとそうじゃないときがわかりにくくて困るんだが・・・
標準ライブラリで文字列処理をしてると実行時に急に落ちて原因究明に時間がかかったおー
0313デフォルトの名無しさん
2006/09/21(木) 10:55:51配列を共有したくない場合。
例えば書き込み禁止になってるメモリ部分にある文字列を代入して変更したいとか。
char[] t="aaaa".dup;
t[2]='b';
0314デフォルトの名無しさん
2006/09/21(木) 11:45:24忘れてたけどだいぶ前にそんな話してたなぁ
0315デフォルトの名無しさん
2006/09/21(木) 12:53:30なんか自分で書くとすごく泥臭くなる orz
Dなら・・・Dならなんとかしてくれる?
0316デフォルトの名無しさん
2006/09/21(木) 14:06:58sum = sum*16 + (c-'0')%('W'-'0');
}
0317デフォルトの名無しさん
2006/09/21(木) 14:20:03思ってたよりもかなり簡潔になりました
ありがとうございました
0318デフォルトの名無しさん
2006/09/21(木) 14:47:57int sum = 0;
foreach(char c; str){
sum = (sum<<4) + ((c|0x20)-'0')%('W'-'0');
}
0319デフォルトの名無しさん
2006/09/21(木) 15:52:23phobosのstd.stringに入れちゃえ
0320デフォルトの名無しさん
2006/09/21(木) 15:57:22とか思ってたら配列限定のプロパティなのね・・・
0321デフォルトの名無しさん
2006/09/21(木) 16:19:09int dec1 = hexToDecimal("A");
int dec2 = hexToDecimal('A'); // <- こっちはエラー
どちらでもいけるようにしようと頑張っているが
引数をchar[]とcharにしてconflictさせたり
templateだと暗黙推論するパラメータは特殊化できないとかでうまくいかなーい
とりえあず 'A' を char[] 型に変換するにはどうするのがいいかな?
0322デフォルトの名無しさん
2006/09/21(木) 16:24:03int hexToDecimal(int c)
{
return ((c|0x20)-'0')%('W'-'0');
}
int hexToDecimal(char[] str)
{
int sum;
foreach(char c; str)
sum = sum*16 + hexToDecimal(c);
return sum;
}
0323デフォルトの名無しさん
2006/09/21(木) 16:35:29return hexToDecimal([c]);
}
long hexToDecimal(char[] hex){
(以下略)
で普通にいけたが。
0324デフォルトの名無しさん
2006/09/21(木) 16:42:20配列リテラル使えるようになったから
int dec2 = hexToDecimal( ['A'] );
こうでしょ。
0325デフォルトの名無しさん
2006/09/21(木) 16:42:220326デフォルトの名無しさん
2006/09/21(木) 16:43:310327デフォルトの名無しさん
2006/09/21(木) 16:58:11符号はどこいったという話だな。
0329デフォルトの名無しさん
2006/09/21(木) 17:08:27顔に見えた
0330デフォルトの名無しさん
2006/09/21(木) 17:09:21顔にしか見えなくなった
和んだ
0331デフォルトの名無しさん
2006/09/21(木) 17:30:44なるほど、文字列で表されている分が有効ビット数なわけね。
int x;
int sum;
foreach(char c; str){
sum = (sum<<4) + ((c|0x20)-'0')%('W'-'0');
x++;
}
x = sum.sizeof*8 - x*4;
sum = (sum<<x)>>x;
0332デフォルトの名無しさん
2006/09/21(木) 18:40:07auto hoge = new Hoge;
これが
auto Hoge hoge;
等価であって欲しいと願う今日この頃
0333デフォルトの名無しさん
2006/09/21(木) 18:42:34じゃあいいや。
0334デフォルトの名無しさん
2006/09/21(木) 18:53:14auto Class c = new Class;
を
auto auto c = new Class;
と書ける仕様じゃないんだよなぁ
(例1) local auto c = new Class;
(例2) auto type c = new Class;
みたいに新しいキーワードを導入する方がいいと思うけども
0335デフォルトの名無しさん
2006/09/21(木) 19:24:10なにこれ。
これ
auto Class c = new Class;
を実現したいなら、これ
auto c = new Class;
で良いはずだが、他になにかの機能付きなのだろうか
0336デフォルトの名無しさん
2006/09/21(木) 19:27:44良いはずねーだろ
下のはRAIIじゃねえぇぇー
0337デフォルトの名無しさん
2006/09/21(木) 19:36:10RAIIってアレだよな。
C++とかで言う
Class c;
ってやつ。
それなら間違ってないと思うが。
0338デフォルトの名無しさん
2006/09/21(木) 19:37:34auto c = new Class;
これはRAIIだよ?
0339デフォルトの名無しさん
2006/09/21(木) 19:38:080340デフォルトの名無しさん
2006/09/21(木) 19:38:39そのautoはただの型推論
0341デフォルトの名無しさん
2006/09/21(木) 19:39:46ちゃうわボケ
0342デフォルトの名無しさん
2006/09/21(木) 19:40:40暗黙の型推論にするキーワードと、RAIIにするキーワードが
両方とも auto なんですよ。全く異なる機能なのに…。
現在の仕様では、両方を同時に指定できないのです。
0343デフォルトの名無しさん
2006/09/21(木) 19:43:40なんだかこれがRAIIに見えるんだが
class CLASS
{
this(){ printf("c\n"); }
~this(){ printf("d\n"); }
}
void main()
{
auto cc = new CLASS;
printf("exp\n");
}
0344デフォルトの名無しさん
2006/09/21(木) 19:45:16単にそれはプログラム終了時にGCされているだけ。
0345デフォルトの名無しさん
2006/09/21(木) 19:45:45それだと~thisはjavaのファイナライザと同等なはず。
0346デフォルトの名無しさん
2006/09/21(木) 19:50:160347デフォルトの名無しさん
2006/09/21(木) 19:55:53仕様に
>関数からの auto 返値も禁止されています。
とあるのに。
class CLASS
{
this(){ printf("c\n"); }
~this(){ printf("d\n"); }
}
CLASS foo() {
auto cc = new CLASS;
return cc;
}
void main()
{
CLASS c = foo();
printf("exp\n");
}
これだとコンパイル通ります。
auto CLASS cc = new CLASS;
と書くと、コンパイルエラー。
よって、
auto cc = new CLASS;
の書き方は、単なる型推論。
0348デフォルトの名無しさん
2006/09/21(木) 19:59:00そうだったのか・・・。ありがとう偉い人。
今後ちょっと書き込み控えます。
0349デフォルトの名無しさん
2006/09/21(木) 20:12:590350デフォルトの名無しさん
2006/09/21(木) 20:38:08const s = "hoge"; とか
static i = 0; とか
static deprecated count = 1; とかもOK。
autoが推論の際に使われるとRAIIにならないってこと。
http://www.kmonos.net/alang/d/declaration.html#AutoDeclaration
まあ事実上autoが推論のキーワードなんだけどな。
一見予約語の追加が面倒だったからのように思えるけど、
これはなにか深遠なる理由があるんだろうか。
0351デフォルトの名無しさん
2006/09/21(木) 20:47:32深遠というよりautoが型推論なのは単純にC++0xのパクリじゃね?
0352デフォルトの名無しさん
2006/09/21(木) 20:53:11その後、型推論のautoが追加された。
さしたる理由はないと思うよ。
0353デフォルトの名無しさん
2006/09/22(金) 10:01:36static hoge = 12; // 静的変数 int
const huga = 12u; // 定数 uint
auto huge = 12l; // RAII long
hoga = 12ul; // ulong
0354353
2006/09/22(金) 10:03:320355デフォルトの名無しさん
2006/09/22(金) 14:10:29> hoga = 12ul; // ulong
バグのもとなのでやめてほしい。
やめてほしいとかいう個人的感情はともかく、Dだと外側のスコープの
変数を覆い隠す形の変数名での宣言を禁止しているくらいだから、
そういうバグの種になるものは採用されないと思う。
0356デフォルトの名無しさん
2006/09/22(金) 14:30:210357デフォルトの名無しさん
2006/09/22(金) 15:11:00型推論くらい最近の関数型言語なら普通でよ。
0358デフォルトの名無しさん
2006/09/22(金) 19:16:030359デフォルトの名無しさん
2006/09/22(金) 20:48:02float志向のPC用CPUって何?
0360デフォルトの名無しさん
2006/09/22(金) 20:57:230361デフォルトの名無しさん
2006/09/23(土) 13:13:250362デフォルトの名無しさん
2006/09/23(土) 13:17:590363デフォルトの名無しさん
2006/09/23(土) 13:41:24ApplicationFrameworkが無いのはつらいな
0364デフォルトの名無しさん
2006/09/23(土) 13:46:550365デフォルトの名無しさん
2006/09/23(土) 14:53:39DFLの使い方を日本語で解説してるところってないですかね?
0366364
2006/09/23(土) 23:06:260367デフォルトの名無しさん
2006/09/24(日) 01:24:13よ〜し
パパ頑張っちゃうぞ〜
0368デフォルトの名無しさん
2006/09/24(日) 01:28:50Noahの中の人は長くつづいてるね。感心する。
03691 ◆qRy0pp8F66
2006/09/24(日) 01:52:23そんな生き方の中で一つ自分について発見したんだ!!
俺は正直じゃない
0370デフォルトの名無しさん
2006/09/24(日) 03:57:330371デフォルトの名無しさん
2006/09/24(日) 11:02:59| ^o^ | < ぼくは まちがって いません
\_/
_| |_
| |
/ ̄\
| | < ぼくも まちがって いません
\_/
_| |_
| |
/ ̄\
| ^o^ | < しんじつは いつも ひとつです
\_/
_| |_
| |
/ ̄\
| | < じゃあ あなたが まちがっています
\_/
_| |_
| |
0372634
2006/09/24(日) 21:40:04日本語の解説サイトを作ろうにも・・・
同梱されてるサンプルくらいしか確実なものがない
0373デフォルトの名無しさん
2006/09/24(日) 21:40:350374デフォルトの名無しさん
2006/09/24(日) 21:46:11ソースという完全な仕様が(ry
0375デフォルトの名無しさん
2006/09/24(日) 22:01:06void regist( void delegate() p )
{
es ~= p;
}
このソースを上手くlazyを使って改良できないかな・・・
lazyはdelegateを簡略化した物だと言ってるけど、実際はちょっと仕様が違うような・・・
0376デフォルトの名無しさん
2006/09/24(日) 22:01:58既出
0377デフォルトの名無しさん
2006/09/24(日) 22:15:01void regist(void delegate()[] p...)
何か整合性が取れてない仕様な気もするが。
0378デフォルトの名無しさん
2006/09/24(日) 22:36:42いやだめだろ。lazy使えって言ってるしさ。
こんなん思いついたけど、多分有効期限切れだと思うけどエラー出た。
ってか無理じゃない?
void regist( lazy void p )
{
es ~= { p(); };
}
0379デフォルトの名無しさん
2006/09/24(日) 22:51:440380デフォルトの名無しさん
2006/09/24(日) 22:54:05小さな会社の思いっきり自己満足な言語なんだろうな。(中の人のレベルは神かも知れんが)
0381デフォルトの名無しさん
2006/09/24(日) 23:06:52http://d.hatena.ne.jp/kurimura/20060831
0382デフォルトの名無しさん
2006/09/24(日) 23:37:140383デフォルトの名無しさん
2006/09/25(月) 01:54:09dfl.ListView のおかしな動作に遭遇したんだけどソース見ても突き止められなかった orz
コミュニティさえ存在しないのかなぁ・・・ミツカンないお
Windows のリストコントロールの拡張スタイルにホバー選択ってのがあるんだけど、この機能はおそらく
hoverSelection = true;
のときだけ有効になるべきなのに、 false でもなぜか中途半端に有効になってる
具体的には true にするとポインティングしたアイテムの文字色が変化してからホバー選択されるが、
false にしてもリストコントロール内に初めてカーソルが入ってから最初にポインティングしたアイテムが
文字色変化なしにホバー選択されてしまうお
// 再現コード
import dfl.all;
class MyForm : Form {
this() {
with (list = new ListView) {
parent = this;
//hoverSelection = true;
auto col = new ColumnHeader;
col.width = 100;
columns.add(col);
items.add("hoge");
items.add("HOGE");
}
}
private ListView list;
}
void main() {
Application.run(new MyForm);
}
0384デフォルトの名無しさん
2006/09/25(月) 16:32:38(ウィンドウのタイトルは普通に通るけど、なんで?)
変換のコストもあるだろうしWバージョン欲しいなあ>>DFL
0385デフォルトの名無しさん
2006/09/25(月) 16:53:39なんでかなあ
0386デフォルトの名無しさん
2006/09/25(月) 19:48:42import/dfl/utf.d 覗いてみたら? ある程度、化け対策してるみたいだよ。
0387デフォルトの名無しさん
2006/09/25(月) 20:28:47lazyの引数に & 付けてアドレス得ようとすると怒られるので…
ダミーの引数追加してから
void foo( lazy void p, int dummy = 0 ) {
>>381の方法を応用し、&dummyからスタック上のpの位置求めて引っこ抜けるんじゃね?
0388デフォルトの名無しさん
2006/09/25(月) 21:08:24>>383
DFL 入れてみた
おなじだった
dmd 0.167
dfl 0.9.2
0390デフォルトの名無しさん
2006/09/25(月) 23:45:56falseのとき、ホバーしただけで選択されるのは
まあ百歩譲って許容範囲としても、そのあと
他のが選択出来なくなってしまうのは困りますね。
0391デフォルトの名無しさん
2006/09/25(月) 23:47:51ああ、一回カーソルをListViewの外に出すと
また選べるようになる。なんじゃこりゃ。w
0392デフォルトの名無しさん
2006/09/27(水) 00:14:170393デフォルトの名無しさん
2006/09/27(水) 00:17:21なめるとおいしい、かじると固い、焼くと焦げる、煮るとあくだらけ。
0394デフォルトの名無しさん
2006/09/27(水) 07:37:210395デフォルトの名無しさん
2006/09/27(水) 09:15:360396デフォルトの名無しさん
2006/09/27(水) 11:15:29OPTLINK : Warning 183: Extension not .RES : COMCTL32.lib
advapi32.lib(0) : Error 2: File Not Found advapi32.lib
とか出て失敗するんですけどもどうしたらいいんでしょうか?
0397デフォルトの名無しさん
2006/09/27(水) 12:29:50build3.02から3.03へupdateしたら、漏れもそのエラー出て悩んだ。
しかたなく3.02へ戻したよ。
もう3.02落とせないみたいだから、揚げといた。
ttp://siomin.hp.infoseek.co.jp/cgi-bin/up/file/build-3.02.zip
0398デフォルトの名無しさん
2006/09/27(水) 13:54:16もし既出でないなら、英語の得意なかた、Walterタソの所へ報告してもらえませんか。
構造体を初期状態へ戻すコード
//----- ERROR -----
struct AAA { int a, b; }
void main() {
AAA x;
x = x.init;
}
//----- ERROR -----
struct BBB { int a; bool b; }
void main() {
BBB x;
x = x.init;
}
0399デフォルトの名無しさん
2006/09/27(水) 13:54:48struct AAA { int a, b; }
void main() {
AAA x;
x = AAA.init; // x = typeof(x).init;
}
//------ OK ------
struct CCC { int a; char b; }
void main() {
CCC x;
x = x.init;
}
//------ OK ------
struct DDD { int a, b = 0; }
void main() {
DDD x;
x = x.init;
}
簡単にエラー回避できるんだけど、
エラーとして表示される行番号が、適切でないので
どうしてエラー出たのかわかりにくい。
0400デフォルトの名無しさん
2006/09/27(水) 13:59:48Bugzillaで探してなければ報告汁
http://d.puremagic.com/bugzilla/
0401デフォルトの名無しさん
2006/09/27(水) 17:10:30そういう漏れもTOEIC200点台 orz
0402デフォルトの名無しさん
2006/09/27(水) 17:13:540403デフォルトの名無しさん
2006/09/27(水) 20:38:120404デフォルトの名無しさん
2006/09/27(水) 21:18:07今でもできるかな
0405デフォルトの名無しさん
2006/09/27(水) 23:14:36石綿乙
0406デフォルトの名無しさん
2006/09/27(水) 23:22:39疲れ目乙
0407デフォルトの名無しさん
2006/09/27(水) 23:54:37そこらへんの仕様は変わってないはず
0408383
2006/09/28(木) 01:26:15final void hoverSelection(bool byes) // setter
誰かこの関数を呼んでくれぇ
どうみてもこの関数内を通過していません本当にありがとうございました orz
コンパイラのバグかなぁ
0409デフォルトの名無しさん
2006/09/28(木) 01:30:16DからするとC#とかって言語的な完成度が高いようなきがするよな…
何だろう、こう…子供が踏み台に上って、「ほら、ボクって大人と同じ大きさなんだよ!」みたいな雰囲気があるのは…
0410デフォルトの名無しさん
2006/09/28(木) 01:33:40実アプリを作れるという意味ではDは未だにバージョンアップのたびに言語仕様を変更して
バックコンパチビリティがないからC#の方が完成度が高いのは間違いないからね。
0411デフォルトの名無しさん
2006/09/28(木) 01:34:270412デフォルトの名無しさん
2006/09/28(木) 01:36:29うん、そうなんだけど
俺もDは陰ながら応援してる身だし、あんまり浮気はしない
この間C++からC#に(何を思ったか)移行しようと思ってた趣味の人間を、Dに引きずりこんだし。
色々あってDは面白いよね
けれどね、コンパイラの設計とコンパイルの実装が食い違っていたりするのは論外なんじゃないかな、
って思い始めてきちゃったんだ
…ああ、全てが崩壊していく(orz
0413デフォルトの名無しさん
2006/09/28(木) 01:43:100414デフォルトの名無しさん
2006/09/28(木) 02:01:09これがVistaになって劇的に改善されるとかだったらC#へ移行するんだけどなぁ
0415デフォルトの名無しさん
2006/09/28(木) 02:09:17変わらないと思うよ
そして予想だけどあなたの思う「動作が遅い」は数々の恩恵による結果だと思う
0416383
2006/09/28(木) 02:13:33ライブラリ全体を再ビルドできなきゃならんのか
ソースだけいじってもそらダメだ罠 orz
0417デフォルトの名無しさん
2006/09/28(木) 02:23:38Buildの使い方(日本語)はありませんか?
何をどうやったら
>>8の
自動的にインポート関係を調べてコンパイル/リンクしてくれるツール。
を実現できるのかわからなくて・・・
0418デフォルトの名無しさん
2006/09/28(木) 02:35:15J#のライブラリをC#で使ったり、C#のライブラリをNemerleで使ったり。
0419デフォルトの名無しさん
2006/09/28(木) 06:08:530420デフォルトの名無しさん
2006/09/28(木) 06:28:15それは解っているんだが、
ソフトによってはその恩恵よりもスピードが大切なものもあるからな。
原理上難しいのは解るが、少しでも改善されるのであれば、
C#という言語がもっと使えるものになるとは思うけどね。
もうスレ違いなのでsage
0421デフォルトの名無しさん
2006/09/28(木) 12:46:39WTLをDで使う方法を教えてくれ
0422デフォルトの名無しさん
2006/09/28(木) 13:00:10インポート関係を調べる出発点となるファイルが仮に hoge.d だとすると、
(dmdやlinkにPATHが通っている場合は) build hoge.d とするだけ。
出発点にする適当なファイルが無いなら、
「importとpragmaだけ書いた .dファイル」を作り、それをbuildに喰わせてもいい。
GUIアプリなら、-gui スイッチを追加。build hoge.d -gui
-name スイッチを付けると、ファイル一覧表示あり。
-T△△△ スイッチを付けると、 △△△.exe として作成。(pragma指定より優先)
-clean スイッチを付けると、ビルド後に.objなどの作業ファイルを削除してくれる。
必要に応じて、ソース中にbuild用のpragmaを書き加えれば、コマンドラインに長々と書かなくて済む。
build用のpragmaは、そのままだとdmdでエラーになるので version(build) でくくる。
例:
version(build) {
pragma(export_version, hage); //全てのdmdコンパイルに -version=hage を適用
pragma(build, "resource.rc"); //Dコンパイラ以外で作成するファイル。(動作の詳細はRuleDefinitionFileで指定)
pragma(build_def, "EXETYPE NT"); //リンカへのオプション
pragma(build_def, "SUBSYSTEM WINDOWS,4.0"); //リンカへのオプション
pragma(link,"phobos.lib"); //リンクするもの
pragma(link,"gdi32.lib"); //リンクするもの
pragma(target, "fuga"); //ビルドされるファイル名 fuga.exe
}
あとは、WebPage翻訳でも使っておくれ ttp://build.dsource.org/User_Manual.html
0423デフォルトの名無しさん
2006/09/28(木) 16:35:230424デフォルトの名無しさん
2006/09/28(木) 17:48:05ありがトン!
すごくよくわかりました
インポート文を書かなくてもソースリストを渡せばコンパイルしてくれるのかと思った
0425デフォルトの名無しさん
2006/09/30(土) 21:43:02foreach(element; array) {
st(element);
}
}
void main() {
["abc"[],"xyz","12345"].each( delegate(char[] s) { writefln(s); } );
}
0426デフォルトの名無しさん
2006/09/30(土) 22:10:49foreach(idx, element; array) {
st(element, idx);
}
}
void main() {
int[] a = ([1, 2, 3]);
a.each_idx( (int x, int idx) { writef(x, (idx<a.length-1) ? "," : "\n"); } );
}
delegate イランカッタノカ...
0427デフォルトの名無しさん
2006/09/30(土) 23:27:260428デフォルトの名無しさん
2006/09/30(土) 23:29:300429デフォルトの名無しさん
2006/09/30(土) 23:37:130430デフォルトの名無しさん
2006/09/30(土) 23:51:37void p(int i){printf("%d",i);}
100.p();
↑こんな機能
0431デフォルトの名無しさん
2006/10/01(日) 00:47:010432デフォルトの名無しさん
2006/10/01(日) 00:47:54いかん…Grovyと混ざってるかも
0433デフォルトの名無しさん
2006/10/01(日) 01:43:38え、そうなんだ。
ってか>>430のコード通らないし。
できればその機能のドキュメント読みたいので参照求みます
0434デフォルトの名無しさん
2006/10/01(日) 01:45:32a.hoge();
a.hoge;
どっち使ってる?
漏れは戻り値型がvoidならa.hoge()
そうじゃなかったらa.hoge
0435デフォルトの名無しさん
2006/10/01(日) 01:49:42a.hoge; はプロパティ限定と心に決めている。
0436デフォルトの名無しさん
2006/10/01(日) 01:52:080437デフォルトの名無しさん
2006/10/01(日) 01:52:520438デフォルトの名無しさん
2006/10/01(日) 02:09:48俺も同じ
0439デフォルトの名無しさん
2006/10/01(日) 02:11:300440デフォルトの名無しさん
2006/10/01(日) 02:34:450441デフォルトの名無しさん
2006/10/01(日) 02:39:35int main( char[][] args ) {
if(args.length == 1) {
dout.writeLine(args[0] ~ " :デフォルトの名無しさん :2006/10/01(日) 20:32:17");
dout.writeLine(" アッチョンブリケ!");
} else {
dout.writeLine("ぬるぽ");
}
}
0442デフォルトの名無しさん
2006/10/01(日) 02:52:21//メソッド呼び出しを意図していることが一見して判る
a.hoge();
//一見しただけではメソッド呼び出しを意図してるのかgetterなのかはたまたメンバ変数なのか区別がつかない
a.hoge;
と曖昧さの回避や混乱の防止などの理由。
>>440
自分が信仰しているコーティングスタイルの教義に反するんだろう。
0443デフォルトの名無しさん
2006/10/01(日) 03:45:06これもコーディング標準で言及して欲しいな
0444デフォルトの名無しさん
2006/10/01(日) 03:47:340445デフォルトの名無しさん
2006/10/01(日) 03:53:530446デフォルトの名無しさん
2006/10/01(日) 04:17:15ようになってたと思うけど、444の言うもそれなんかな。
Dの、メンバ変数かgetter/setterかの自由を保留できる
やり方は、getter/setter定義の省略よりも素直な感じが
するなあ。どっちでも最適化されるだろうとはいえ、意味上は。
>>445
呼べるようにしてあるのは、get/setとメンバ変数の区別を、
呼び出し側においてしなくてすむようにするため、だったはず。
という話じゃなくて、442のa.hoge;みたいな記述はコンパイラで
エラーにしろよ、という話なのかな。
0447デフォルトの名無しさん
2006/10/01(日) 04:54:25pascalは引数無しの手続きや関数をそうやって書ける。
Dの場合はsmalltalkのアクセサと同じ感覚の方での使い方なんだろうけどね。
0448デフォルトの名無しさん
2006/10/01(日) 05:45:56int x = a.hoge;
// setter
a.hoge = 10;
// method
a.hoge(); // a.hoge;でも呼べてしまう
methodをa.hoge;で呼べてしまうのはgetterの()を省略できる仕様の弊害だと思う
弊害の方には目をつぶっている?
戻り値があるmethodとgetterの区別を付けるうまい方法があればいいんじゃね?
0449デフォルトの名無しさん
2006/10/01(日) 05:47:28完全に解決できてないし
0450デフォルトの名無しさん
2006/10/01(日) 06:36:260451デフォルトの名無しさん
2006/10/01(日) 06:46:550452デフォルトの名無しさん
2006/10/01(日) 06:47:400453デフォルトの名無しさん
2006/10/01(日) 06:48:360454デフォルトの名無しさん
2006/10/01(日) 07:23:28名前もscopeoutとかfailoutとか,構文だって他にあるだろうに
try{
scope(exit) { writef("scopeout"); writefln();}; // 最後の;はなくてもいいらしいがなんでやねん
cope(failure) writefln("failout"); // ;必要
scope(success) writefln("successout"); // ;必要
writefln("foo");
throw new Exception("exception");
}
catch(Exception e){
writefln(e);
}
>>実行結果
foo
failout
scopeout
exception
0455デフォルトの名無しさん
2006/10/01(日) 07:25:11sが抜けた
0456デフォルトの名無しさん
2006/10/01(日) 07:48:23普通にscope(i)で良いと思います。
あと、このコードの
scope(exit) { writef("scopeout"); writefln();};
最後の;は普通に要らんと思います。
0457デフォルトの名無しさん
2006/10/01(日) 08:30:38for(;;){
};
とか
while(...){
};
とか書いてる馬鹿だろうから放置しる
0458デフォルトの名無しさん
2006/10/01(日) 11:16:00イライラするって ; だけ?アホ?
文と式の区別もつかないバカは死んだらいいよ。
0459デフォルトの名無しさん
2006/10/01(日) 11:20:39せっかくだからって…closeだとかSDL_termだとかで必要な時に使えよ…
0460デフォルトの名無しさん
2006/10/01(日) 12:03:38すでに()の省略やプロパティなんかは10数年以上の歴史を持ってますよと
さらにいえばプロパティはメソッドの糖衣構文ですよと
0461デフォルトの名無しさん
2006/10/01(日) 14:08:57まぁ苛々しすぎてるのはお前のほうだけどなw
0462デフォルトの名無しさん
2006/10/01(日) 14:17:46はいはい。意味不明君は帰ろうね
0463デフォルトの名無しさん
2006/10/01(日) 14:21:51ほんとにすげー苛々してるなw
薬はちゃんと飲めよ。勝手な判断で飲まないと悪化するからな。
0464デフォルトの名無しさん
2006/10/01(日) 14:24:32お前ら全員帰れ。つまらない事でスレ消費すんな
0465デフォルトの名無しさん
2006/10/01(日) 14:25:320466デフォルトの名無しさん
2006/10/01(日) 14:27:35| //ヘ-‐ '´ ̄ ̄`ヽ、
| / / /" `ヽ ヽ \ りぴたりるんらーるっぱりるぴらんこれかんろっかやきりかんぐー
三 | //, '/ ヽハ 、 ヽ
/ 三 .L 」 ミ{_{`ヽ ノ リ| l │ i| まっちゃっちゃーやりびだりりんらびりちたんりんらんでんらんどー
X / | | .レ!小l● ● 从|、i|
/ | | ヽ|l⊃ 、_,、_, ⊂⊃ |ノ│ あばりっかったーばりっぱりーばりびりびりびりすてんてんどんどん
/´`'J __|ヘ ゝ._) j /⌒i !
. ― ヽ._人::::| l>,、 __, イァ/ /│やばりんらすてんらんてんやろーわらぶどぅぶどぅぶどぅぶどぅぶどぅーやぶー
. ― ミ ノ ノ:::::/| /ヾ:::|三/::{ヘ、__∧ |
ミ (_/`ヽ< | | /ヾ∨:::/ヾ:::彡' | わでぃーだんりんらんせんらんどぶだけだげだげどぅーどぅーでーやどー
0467デフォルトの名無しさん
2006/10/01(日) 14:29:470468デフォルトの名無しさん
2006/10/01(日) 14:34:50| //ヘ-‐ '´ ̄ ̄`ヽ、
| / / /" `ヽ ヽ \ りぴたりるんらーるっぱりるぴらんこれかんろっかやきりかんぐー
三 | //, '/ ヽハ 、 ヽ
/ 三 .L 」 ミ{_{`ヽ ノ リ| l │ i| まっちゃっちゃーやりびだりりんらびりちたんりんらんでんらんどー
X / | | .レ!小l● ● 从|、i|
/ | | ヽ|l⊃ 、_,、_, ⊂⊃ |ノ│ あばりっかったーばりっぱりーばりびりびりびりすてんてんどんどん
/´`'J __|ヘ ゝ._) j /⌒i !
. ― ヽ._人::::| l>,、 __, イァ/ /│やばりんらすてんらんてんやろーわらぶどぅぶどぅぶどぅぶどぅぶどぅーやぶー
. ― ミ ノ ノ:::::/| /ヾ:::|三/::{ヘ、__∧ |
ミ (_/`ヽ< | | /ヾ∨:::/ヾ:::彡' | わでぃーだんりんらんせんらんどぶだけだげだげどぅーどぅーでーやどー
0469デフォルトの名無しさん
2006/10/01(日) 14:35:030470デフォルトの名無しさん
2006/10/01(日) 14:36:11| //ヘ-‐ '´ ̄ ̄`ヽ、
| / / /" `ヽ ヽ \ りぴたりるんらーるっぱりるぴらんこれかんろっかやきりかんぐー
三 | //, '/ ヽハ 、 ヽ
/ 三 .L 」 ミ{_{`ヽ ノ リ| l │ i| まっちゃっちゃーやりびだりりんらびりちたんりんらんでんらんどー
X / | | .レ!小l● ● 从|、i|
/ | | ヽ|l⊃ 、_,、_, ⊂⊃ |ノ│ あばりっかったーばりっぱりーばりびりびりびりすてんてんどんどん
/´`'J __|ヘ ゝ._) j /⌒i !
. ― ヽ._人::::| l>,、 __, イァ/ /│やばりんらすてんらんてんやろーわらぶどぅぶどぅぶどぅぶどぅぶどぅーやぶー
. ― ミ ノ ノ:::::/| /ヾ:::|三/::{ヘ、__∧ |
ミ (_/`ヽ< | | /ヾ∨:::/ヾ:::彡' | わでぃーだんりんらんせんらんどぶだけだげだげどぅーどぅーでーやどー
0471デフォルトの名無しさん
2006/10/01(日) 14:37:040472デフォルトの名無しさん
2006/10/01(日) 14:37:29| //ヘ-‐ '´ ̄ ̄`ヽ、
| / / /" `ヽ ヽ \ りぴたりるんらーるっぱりるぴらんこれかんろっかやきりかんぐー
三 | //, '/ ヽハ 、 ヽ
/ 三 .L 」 ミ{_{`ヽ ノ リ| l │ i| まっちゃっちゃーやりびだりりんらびりちたんりんらんでんらんどー
X / | | .レ!小l● ● 从|、i|
/ | | ヽ|l⊃ 、_,、_, ⊂⊃ |ノ│ あばりっかったーばりっぱりーばりびりびりびりすてんてんどんどん
/´`'J __|ヘ ゝ._) j /⌒i !
. ― ヽ._人::::| l>,、 __, イァ/ /│やばりんらすてんらんてんやろーわらぶどぅぶどぅぶどぅぶどぅぶどぅーやぶー
. ― ミ ノ ノ:::::/| /ヾ:::|三/::{ヘ、__∧ |
ミ (_/`ヽ< | | /ヾ∨:::/ヾ:::彡' | わでぃーだんりんらんせんらんどぶだけだげだげどぅーどぅーでーやどー
0473デフォルトの名無しさん
2006/10/01(日) 14:38:54| //ヘ-‐ '´ ̄ ̄`ヽ、
| / / /" `ヽ ヽ \ りぴたりるんらーるっぱりるぴらんこれかんろっかやきりかんぐー
三 | //, '/ ヽハ 、 ヽ
/ 三 .L 」 ミ{_{`ヽ ノ リ| l │ i| まっちゃっちゃーやりびだりりんらびりちたんりんらんでんらんどー
X / | | .レ!小l● ● 从|、i|
/ | | ヽ|l⊃ 、_,、_, ⊂⊃ |ノ│ あばりっかったーばりっぱりーばりびりびりびりすてんてんどんどん
/´`'J __|ヘ ゝ._) j /⌒i !
. ― ヽ._人::::| l>,、 __, イァ/ /│やばりんらすてんらんてんやろーわらぶどぅぶどぅぶどぅぶどぅぶどぅーやぶー
. ― ミ ノ ノ:::::/| /ヾ:::|三/::{ヘ、__∧ |
ミ (_/`ヽ< | | /ヾ∨:::/ヾ:::彡' | わでぃーだんりんらんせんらんどぶだけだげだげどぅーどぅーでーやどー
0474デフォルトの名無しさん
2006/10/01(日) 14:42:27まっちゃっちゃー
じゃなくて
らっつぁっつぁー
0475デフォルトの名無しさん
2006/10/01(日) 14:44:16天安門 自由 台湾 独立 法輪功 虐殺 人権 蛇頭 臓器
0476デフォルトの名無しさん
2006/10/01(日) 15:22:310477デフォルトの名無しさん
2006/10/01(日) 15:23:34イライラしてるのも、薬を飲まないといけないのもお前だろ・・・
0478デフォルトの名無しさん
2006/10/01(日) 15:28:41462
0479デフォルトの名無しさん
2006/10/01(日) 15:29:470480デフォルトの名無しさん
2006/10/01(日) 15:30:41俺じゃないので454だな。
0481デフォルトの名無しさん
2006/10/01(日) 15:32:030482デフォルトの名無しさん
2006/10/01(日) 15:32:270483デフォルトの名無しさん
2006/10/01(日) 15:34:010484デフォルトの名無しさん
2006/10/01(日) 15:40:10ワロタww
0485デフォルトの名無しさん
2006/10/01(日) 16:00:130486デフォルトの名無しさん
2006/10/01(日) 16:07:360487デフォルトの名無しさん
2006/10/01(日) 16:32:52もしかしてお前欝気味?
0488454
2006/10/01(日) 17:44:11俺のせいでえらいことになってるな・・・すまん.
scope(i)と括弧をまたいでiも含めてキーワードになってるのが気持ち悪かったんだ.他にそんなのあったか?
セミコロンはfor&whileの後の{}と同じだったんだな・・・()が気持ち悪くて気づかんかった・・・単文のときはそりゃいるだろ,俺のばかー.
あとせっかくだからっていうのは存在を忘れ去られている機能じゃないかと思ってたよ・・・
0489デフォルトの名無しさん
2006/10/01(日) 17:51:18キーワードってか予約語はscopeだけ。extern(C)とかと同じ。括弧内は特別扱いは少しキモいかもね。if(auto i=true)は通るのにwhile(auto i=getLog())は通らなかったり…
0490デフォルトの名無しさん
2006/10/01(日) 18:15:19もしかしてお前脳トロ?
0491デフォルトの名無しさん
2006/10/01(日) 18:29:14脳トロってなんかおいしそうじゃね?
0492デフォルトの名無しさん
2006/10/01(日) 18:55:21美味しいよ?中国では一般的な食べモノ
0493デフォルトの名無しさん
2006/10/01(日) 18:56:37私達中華人民はあなたたちの掲示板を拝見して笑ってみてますよ。ではありがとうございました。
0494デフォルトの名無しさん
2006/10/01(日) 19:02:380495デフォルトの名無しさん
2006/10/01(日) 19:05:110496デフォルトの名無しさん
2006/10/01(日) 19:19:160497デフォルトの名無しさん
2006/10/01(日) 19:29:480498デフォルトの名無しさん
2006/10/01(日) 19:35:32あれ俺だけじゃないの雇われたのって
0499デフォルトの名無しさん
2006/10/01(日) 19:51:22はい、雇われたと妄想してるのはあなただけじゃないですよ
0500デフォルトの名無しさん
2006/10/01(日) 19:54:18先客がいるならやることないや。それじゃ
0501デフォルトの名無しさん
2006/10/01(日) 20:09:170502デフォルトの名無しさん
2006/10/01(日) 20:16:25受け取る時はinout指定すればいいみたいなんだけど……。
0503デフォルトの名無しさん
2006/10/01(日) 20:20:07日本語でおk
int* test(){
int i=1;
return &i;
}
ってこと?
0504デフォルトの名無しさん
2006/10/01(日) 20:28:13ごめん、そういうこと(勿論ローカル変数じゃないけども)。
C++だとint&で返せたんだけども、やっぱりポインタ使う形になるのか。
0505デフォルトの名無しさん
2006/10/01(日) 20:55:410506sage
2006/10/01(日) 22:14:06完成までもう少しかもしれん。
0507デフォルトの名無しさん
2006/10/01(日) 22:16:41http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/org/w3c/dom/package-summary.html
0508デフォルトの名無しさん
2006/10/01(日) 22:17:210509デフォルトの名無しさん
2006/10/01(日) 22:20:120510デフォルトの名無しさん
2006/10/01(日) 22:21:200511sage
2006/10/01(日) 22:47:450512デフォルトの名無しさん
2006/10/01(日) 22:52:140513sage
2006/10/01(日) 22:54:400514デフォルトの名無しさん
2006/10/01(日) 23:01:460515デフォルトの名無しさん
2006/10/01(日) 23:11:180516デフォルトの名無しさん
2006/10/02(月) 00:26:26テンプレートを明示的に実体化して、.objに出力することはできる?
自作ライブラリの中で
template LimitCalc(T)
{
T plus(T n, T m) { ... }
}
みたいなのを使って、.libにまとめた後アプリにリンクしようとすると
hello.obj(hello)
Error 42: Symbol Undefined _D3dgl4math16__T9LimitCalcTiZ4plusFiiZi
ていうのがいつも出てくる
0517デフォルトの名無しさん
2006/10/02(月) 01:11:37コンパイル時にのみ意味がある。リンクの時には無意味。
0518デフォルトの名無しさん
2006/10/02(月) 06:12:00enum ABC : uint { A=3, B, C }
これの方が
typedef uint ABC = 3;
enum : ABC { A=ABC.init, B, C }
好きなんだがどう思う?
0519516
2006/10/02(月) 10:05:34言葉が足りなかった。
いや、テンプレートそのものをライブラリに出来ないのはわかってる。
そうじゃなくて、(LimitCalc!(int).plus(int,int)みたいに)
特殊化済みの状態のテンプレートを.objに出力したい。
dmdの仕様なのか、-cオプションで出てくる.objにはテンプレートの実体
(_D3dgl4math16__T9LimitCalcTiZ4plusFiiZi みたいなの)が
出力されてこないんだよ。
0520デフォルトの名無しさん
2006/10/02(月) 12:12:59でもそんなコトするのになんの意味があるのだろう?
テンプレートを import しないで使う理由がわからん。
0521!= 516
2006/10/02(月) 15:09:03テンプレートを使ったコードをライブラリにするとリンクエラーが起こるって話だよ。
ライブラリにしないで普通にコンパイルするとうまくいくから、コンパイラのバグだと思うんだけど。
>>519
俺も散々悩まされてるんで、いろいろやっているのだけど、決め手になるものは無い状態。
確認している症状としては、
1.ライブラリのテンプレートの中で可変数引数の関数を使うとだめ。
2.デバッグビルドでTypeInfo系のシンボルが生成されない。
3.ライブラリのテンプレートの中でmixinを使うとシンボルが生成されない。
4.ライブラリの中でテンプレートの特殊化を使うとシンボルがめちゃくちゃになる。
って感じ。
一応の対処法としては、ライブラリのコードをテンプレートで包んでミックスインするというのがあるけど、あまり美しくない。
ライブラリにしない状態と同じになるから、うまくいくことはいくのだけれど。
0522デフォルトの名無しさん
2006/10/02(月) 15:43:18そんなにバグあるのか・・・。
っていうか、リンカやライブラリアンじゃなくてコンパイラなの?
0523デフォルトの名無しさん
2006/10/02(月) 16:15:320524521
2006/10/02(月) 16:49:13例えば、hoge.dで521のようなことをしているとして、
dmd hoge.d main.d
だとうまくいくが、
dmd -c hoge.d
dmd -c main.d
dmd hoge.obj main.obj
とするとリンクエラーになる。
なんでだと思って、生成されるhoge.objを比べてみると、それ自体の中身が違ってたりする(リンクすべき対象が無い)。
だから、コンパイラの方なんじゃないかと。
リンクすべき対象が無ければリンクエラーになるのは当たり前なんで、リンカに罪はないと思う。
>>523
うまくいかないのはWindows環境だけか。
なるほど。
0525デフォルトの名無しさん
2006/10/02(月) 16:59:34winのdmツールはじめて使ったのでもしかしたら、使い方まちがってただけかもしれん・・・。
0526516
2006/10/02(月) 20:06:33ありがとう。現状では根本解決はできないのか。
というか、他にそんなバグがあったなんて知らなかった。
>>523
gdcではOKなのね。コンパイラ関係なのは判ってたから、そっちでは
問題ないかもと思っていたんだが、検証thx。
0527デフォルトの名無しさん
2006/10/03(火) 11:55:00#dmd.zip落とそうとしたら0KBのが落ちてきたのでftp経由でdmd.168.zip落とした
0528デフォルトの名無しさん
2006/10/03(火) 12:26:08Oct 2, 2006
New/Changed Features
* Added .ptr property for delegates.
* Added .outer property for nested class instances.
* Can now initialize stack variables with array literals.
* Array literals can now be cast to [][] types.
* Mixins can now insert multiple destructors.
0529デフォルトの名無しさん
2006/10/03(火) 12:43:540530デフォルトの名無しさん
2006/10/03(火) 13:08:11win32.windowsって、どこにあるファイル?
0531デフォルトの名無しさん
2006/10/03(火) 13:16:000532デフォルトの名無しさん
2006/10/03(火) 13:52:08>7のやつを使っとけ
今やDのWindowsAPIのバインディングはそっちが標準だから
0533デフォルトの名無しさん
2006/10/03(火) 14:45:04今でも動くかはしらんが
http://www.digitalmars.com/d/archives/digitalmars/D/32313.html
をねじこめば。
0534デフォルトの名無しさん
2006/10/03(火) 16:54:39スマソ。
そっちの話じゃなくて落ちる原因
//再現コード
const int fooSize = Foo.sizeof;
struct tagFoo {}
alias tagFoo Foo;
void main(){}
の方が未だに直ってないねって話。
0535デフォルトの名無しさん
2006/10/03(火) 18:39:22template test(char[] val){
const char[] test=val;
}
mixin test!(['a','b','c']);
0536デフォルトの名無しさん
2006/10/03(火) 19:10:11template test(char[] val){
const ubyte[] test=cast(ubyte[])val;
// const char[] test=val;
}
const char[] t=[cast(char)1,2,3,4];
int main(char[][] args){
writefln("%d",test!(t)[0]);
return 0;
}
0537デフォルトの名無しさん
2006/10/03(火) 19:30:53void main(){
writefln([1,2,3]~2);
}
0538デフォルトの名無しさん
2006/10/03(火) 20:33:47const char[] c = ['0'];
switch(hoge){
case c:
break;
}
がエラーになるがらみの。
0539デフォルトの名無しさん
2006/10/04(水) 08:34:38効率的なら使えばいいのにとか思う。
0540デフォルトの名無しさん
2006/10/04(水) 19:02:360541デフォルトの名無しさん
2006/10/04(水) 22:59:54いや、俺>>539じゃないしよく知らんけど。
0542デフォルトの名無しさん
2006/10/04(水) 23:28:41ここが参考になる
http://www.emit.jp/mt/mt.html
0543デフォルトの名無しさん
2006/10/05(木) 15:25:13あとメモリーを食いすぎる
複数の乱数原を使うときはキャッシュの利用効率が悪くなる
0544デフォルトの名無しさん
2006/10/05(木) 16:31:34質のいい乱数生成法の中では軽いほうだし
線形合同法の質の悪さを考えたら普通はMTを選ぶと思うな
0545デフォルトの名無しさん
2006/10/05(木) 17:01:00対応して欲しいな…
0546デフォルトの名無しさん
2006/10/05(木) 17:15:08なる。サンクス。
まあ今のrandomはマルチスレッドにも非対応ってことだし、アルゴリズムも含めて暫定的な実装なのかな。
0547デフォルトの名無しさん
2006/10/05(木) 18:08:13みんな知ってるのかもしれないけどMT実装あるみたい。
randomは修正BSDらしいからstd.randomが気にくわない人は使うといいかと思われる。
0548デフォルトの名無しさん
2006/10/05(木) 18:41:15http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt.html
0549デフォルトの名無しさん
2006/10/05(木) 19:33:010550デフォルトの名無しさん
2006/10/05(木) 19:44:070551デフォルトの名無しさん
2006/10/05(木) 21:00:19class AAA {
private char[] m_key;
this( char[] key ) { m_key = key; printf("this\n"); }
~this() { printf("~this\n"); }
void value1( int v ) {
scope(exit) delete this;
printf("%.*s - %d\n",m_key,v);
}
int value2() {
scope(exit) delete this;
return m_key.length;
}
}
AAA foo( char[] key ) {
return new AAA( key );
}
void main() {
foo("xxx").value1 = 100;
printf("%d\n", foo("abcdefg").value2 );
printf("end\n");
}
こなかんじで class AAA はセッター/ゲッターに
データを引き渡す為だけの一時的なクラスである場合、
セッター/ゲッター内で scope(exit) delete this; とするのはマズイでしょうか?
0552デフォルトの名無しさん
2006/10/06(金) 00:47:43すんなり動く方法があったりしますか?
まずコンパイラがerror_status_tが見つからないっていうから
rpcndr.d (377あたり) : alias ulong error_status_t;// 追加 ulongでok?
ここからwin32.libを持ってくる
ttp://hp.vector.co.jp/authors/VA028375/d/windows.h.html
ソースのmain.dもこれをベースにして作った
ただし CreateWindow はリンクエラーになったんで CreateWindowEx にした
Gdi32.lib と win32.def も用意して最後に
dmd main.d Gdi32.lib win32.lib win32.def -version=Unicode
ちなみにANSIビルドはまだ成功していない
0553デフォルトの名無しさん
2006/10/06(金) 01:08:09なんでwin32.libがいるの?
そんなのリンクするからエラーなるんじゃないの?
0554デフォルトの名無しさん
2006/10/06(金) 06:03:49>>7はソースからwin32.libをビルドして使うものだよ
0555デフォルトの名無しさん
2006/10/06(金) 08:03:42ありがトン
0556デフォルトの名無しさん
2006/10/06(金) 18:54:05なんかいい名前ないか?
0557デフォルトの名無しさん
2006/10/06(金) 19:00:460558デフォルトの名無しさん
2006/10/06(金) 19:03:420559デフォルトの名無しさん
2006/10/06(金) 21:07:250560デフォルトの名無しさん
2006/10/06(金) 22:01:04Strean配列をひとつのStreamにってのならやったことある。
0561デフォルトの名無しさん
2006/10/06(金) 22:30:370562デフォルトの名無しさん
2006/10/06(金) 22:36:220563デフォルトの名無しさん
2006/10/06(金) 22:59:050564デフォルトの名無しさん
2006/10/06(金) 23:00:57ary[0]とすれは毎回違う値が1バイトずつとれてary[3]とすれば3バイトスキップするわけだ
0565デフォルトの名無しさん
2006/10/06(金) 23:03:15そうじゃなくてary[10]とかしたら10まで読み込んでなければ10まで読み込むって感じじゃね?
0566デフォルトの名無しさん
2006/10/06(金) 23:04:48sr = new StreamHoge(source);
sr[0].read(b); // 先頭から
sr[sr.length-1].read(b); // 最後のバイト
みたいなイメージだったんだけど。
0567デフォルトの名無しさん
2006/10/06(金) 23:08:1210要素目以前にEOFが来てたら例外とか?
0568デフォルトの名無しさん
2006/10/06(金) 23:09:31なるほどね。でも普通にランダムアクセス用だな。
0569566
2006/10/06(金) 23:25:130570555
2006/10/07(土) 02:32:31build windows winuser winbase winnt winver windef -full -clean -names -Twin32.lib
で作ってちゃんと動いたんですけど
最小構成のwin32.libってどれだけのソースをリンクしておくものなんでしょうか?
buildが必要なソースを探してコンパイルしにいってくれるようにオプションを設定できないのかなと悪戦苦闘中
0571デフォルトの名無しさん
2006/10/07(土) 12:30:33ヘッダファイルなんだから、わざわざlibを作るもんじゃないんだよ。
仮に作るとしたら、Unicode版、ANSI版、各OS版、各IE版・・・っと
多数の版を作り分けてしないと駄目だし、版を間違えずにリンクする必要もある。
どうせ中身は、constと#defineマクロを関数化したものしか入ってないlibなんだし、作るだけ無駄。
main.d の中に、
version(build) pragma(export_version, Unicode);
version(build) pragma(export_version, Windows2000);
と、作りたいversion書いて。
build main.d -gui
でOK。 win32.w32api.d 参照。
>>552
>まずコンパイラがerror_status_tが見つからないっていうから
>rpcndr.d (377あたり) : alias ulong error_status_t;// 追加 ulongでok?
rpcndr.d (22) の、private import に win32.basetyps を追加する。ちなみに…uintが正解。
0572デフォルトの名無しさん
2006/10/07(土) 14:50:41そのやり方だとコンパイルするたびにwindows.d以下大量のファイルをコンパイルすることになるから、時間の無駄だな。
まあ、Dはコンパイルが速いからたいしたことは無いだろうけど。
build.exeを使うことを強制させられるのも嫌な感じ。
0573デフォルトの名無しさん
2006/10/07(土) 15:04:46func( 1, 2 );
これ
func(1, 2);
どっちが好き?
0574デフォルトの名無しさん
2006/10/07(土) 15:16:22下の方がわかりやすいから。
0575デフォルトの名無しさん
2006/10/07(土) 15:16:570576デフォルトの名無しさん
2006/10/07(土) 15:26:180577デフォルトの名無しさん
2006/10/07(土) 15:55:27ついでにタブよりスペース派。
0578デフォルトの名無しさん
2006/10/07(土) 16:18:36スペースインデント死ね。
ああ死ね。
俺はタブとスペース両用。
0579デフォルトの名無しさん
2006/10/07(土) 16:20:14お前が一番最悪じゃねーかw
そういやタブインデントかつ80字改行のプロジェクトに居たことがある
これだからドザはwとか思ったよ。俺もドザだけど。
0580デフォルトの名無しさん
2006/10/07(土) 16:26:010581デフォルトの名無しさん
2006/10/07(土) 16:34:310582デフォルトの名無しさん
2006/10/07(土) 16:35:090583デフォルトの名無しさん
2006/10/07(土) 16:39:36rubyのソースは、タブとスペースがまざってて切れそうになった。
rubyは好きだけど
0584デフォルトの名無しさん
2006/10/07(土) 16:50:470585デフォルトの名無しさん
2006/10/07(土) 17:12:13スペースが一番無難じゃね?
0586デフォルトの名無しさん
2006/10/07(土) 17:16:55それをタブインデントと組み合わせるのはおかしい。
GUIばりばりならタブのほうが使い勝手がいい。
0587デフォルトの名無しさん
2006/10/07(土) 17:30:520588デフォルトの名無しさん
2006/10/07(土) 18:43:510589デフォルトの名無しさん
2006/10/07(土) 18:49:08{
class B {
}
class C {
B b = new B;
}
}
これが通らないのって仕様?
outer class A 'this' needed to 'new' nested class B
だそうなんだが、アウタークラスはBと共通なんだから、Cが持ってるAのthisポインタを渡してくれても良さそうなもんじゃね?
なんか理由があるのか?
0590デフォルトの名無しさん
2006/10/07(土) 19:06:360591デフォルトの名無しさん
2006/10/07(土) 19:32:54?
static class A{
static class B{}
class C {
static B b;
static this(){
b= new A.B;
}
}
}
0592デフォルトの名無しさん
2006/10/07(土) 19:49:41や、staticじゃなくてもouterが共通なら生成できても良いんじゃないか?って話。
で今はできないようになってるけどもそれには何か理由があるのかなあと。
0593デフォルトの名無しさん
2006/10/07(土) 20:06:17エラーメッセージがおかしいから混乱してるのだろうけど、newしたかったらthisかstatic thisでしろって話だわな。
class A{
class B{
}
static class C{
static B b;
}
this(){
C.b = this.new B;
}
}
0594デフォルトの名無しさん
2006/10/07(土) 20:49:31>>593
丁寧にサンクス。
0595デフォルトの名無しさん
2006/10/07(土) 23:11:43もうだれかがやってるだろうけどこんな物作ってみた。builtin関数のような物の作成にはコンパイル時ループとかもっと色々欲しい所。
0596デフォルトの名無しさん
2006/10/08(日) 04:48:04スペースでいいと思う。
Tabの理由がみつからない
0597デフォルトの名無しさん
2006/10/08(日) 06:47:32コードの書き(読み)手が好きな幅で見れる。
でもその場合、「TAB = 固定nスペース」と思ってるやつは死ねば良いと思うし、
インデントをTABで固定しなきゃなんない。
それでもメリットがデメリットを上回っていると思っている。
0598デフォルトの名無しさん
2006/10/08(日) 06:55:15func(longlongargument1,
longlongargument2,
longlongargument3);
なんてときに、longlong...の開始位置を縦でそろえるのは
タブインデントじゃ不可能だよね。
> インデントをTABで固定しなきゃなんない。
というのもそうだけど、インデント幅が常に固定というのも
また不便だよ。
0599デフォルトの名無しさん
2006/10/08(日) 07:27:06func(で改行すればタブインデントでも縦にそろいます。
0600デフォルトの名無しさん
2006/10/08(日) 07:37:20・人によってタブ幅が変わる
・環境(エディタの設定等)によってタブ幅が変わる
・TAB=固定nスペースと思ってるやつがけっこういる
以上の欠点より、Tabである必要はない。
0601デフォルトの名無しさん
2006/10/08(日) 07:38:43統合環境なら、スマートインデントっつー機能があって、
適切なタブ+スペースに自動変換してくれる
けど、タブ幅変えたら、くずれるから、スペースインデントでしか実質使えないけどね
0602デフォルトの名無しさん
2006/10/08(日) 08:31:47> func(で改行すればタブインデントでも縦にそろいます。
TABを使うには、縦に間延びさせる必要があるってことだな。
printf("%.*s=%d", longlongnamestr,
longlongnameval);
という書式指定文字列以外の引数を揃える意図のインデントは、
printf("%.*s=%d",
longlongnamestr,
longlongnameval);
というように '(' の直後が改行じゃないという、 "func(" 直後に改行する、
という599のルールとは一貫性がないTABインデントをするか、
printf(
"%.*s=%d",
longlongnamestr,
longlongnameval);
のように、TABインデントのためだけに間延びすることを許容
しなきゃいけないな。
TABインデントは、「適当にTABでインデントされてりゃ十分だよ」
という人のための手段なわけだな。
まあ、字幅が等幅な環境を前提にしない場合はTABで十分なわけで、
「TABインデントで皆我慢しておけ」というのはある程度合理的だとは思う。
0603デフォルトの名無しさん
2006/10/08(日) 08:33:43というか、それが
> ・TAB=固定nスペースと思ってるやつがけっこういる
から生まれた産物の代表例だと思う。TABの意味が分からんよね。
0604デフォルトの名無しさん
2006/10/08(日) 09:05:010605デフォルトの名無しさん
2006/10/08(日) 09:34:19TAB幅が変わっても綺麗に見えるコード書いたほうが良いんでない?
0606デフォルトの名無しさん
2006/10/08(日) 09:42:04TAB使わない方が細かい桁そろえが出来て見栄えがよいよ。
0607デフォルトの名無しさん
2006/10/08(日) 09:42:53いやいやむしろ汚く書いても奇麗に見えるコードを書くのがいいと思う
0608デフォルトの名無しさん
2006/10/08(日) 09:48:53いやそうじゃなくて、「TAB幅が変わっても綺麗に見えるコード」を書けば、
>>600が示すデメリットの二個が消失しますねってこと
TAB=固定nスペースと思ってるやつはやはり死ねば良いと思う。
っていうかそこはただの無知バカだからカウントしなくね?
0609デフォルトの名無しさん
2006/10/08(日) 09:52:140610デフォルトの名無しさん
2006/10/08(日) 10:02:42・環境(エディタの設定等)によってタブ幅が変わる
この違いが分からない
0611デフォルトの名無しさん
2006/10/08(日) 10:41:55>587
0612デフォルトの名無しさん
2006/10/08(日) 10:52:35これ最強
0613デフォルトの名無しさん
2006/10/08(日) 11:03:57D版のDindentがあればいいのかな。
0614デフォルトの名無しさん
2006/10/08(日) 11:42:09設定変更不可の外部環境と自分の他の環境が異なると、
同じ人で同じソースなのにタブ幅が違うという状況になるよー、
という話じゃないの?
>>608
TAB使わなければ、そのデメリットの他に>602のような制約も
なくなるよ、という話。
で、どっちをとるかというと、「TAB幅可変に対応するために表記が
制限されるよりも、TAB使わずに綺麗に書くのがベストだよなあ」
ということになった。俺は。
0615デフォルトの名無しさん
2006/10/08(日) 11:47:17TABの事を延々と語る馬鹿達はうざいから消えて欲しいかなー
ってことぐらい。
0616デフォルトの名無しさん
2006/10/08(日) 11:52:07ほら、Makefileとかじゃタブに意味があるから、
D言語のソースでTAB幅を調整するのを強制されるとうざいんだよ。
Haskellじゃそんな問題出ようもないから、D言語的には関係が
なきにしもあらずって感じがしない? しない? しないかな、やっぱり。
0617デフォルトの名無しさん
2006/10/08(日) 12:10:380618デフォルトの名無しさん
2006/10/08(日) 12:21:080619デフォルトの名無しさん
2006/10/08(日) 12:45:280620デフォルトの名無しさん
2006/10/08(日) 12:53:17>スペースでいいと思う。Tabの理由がみつからない
とりあえず死ね
0621デフォルトの名無しさん
2006/10/08(日) 13:59:120622デフォルトの名無しさん
2006/10/08(日) 14:01:140623デフォルトの名無しさん
2006/10/08(日) 14:58:440624デフォルトの名無しさん
2006/10/08(日) 16:30:070625デフォルトの名無しさん
2006/10/08(日) 16:36:20blogぐらいしか情報ないかと
0626デフォルトの名無しさん
2006/10/08(日) 17:14:30ようは開発環境がTABを仮想してくれるなら空白がいいよね?ってことだな。
0627デフォルトの名無しさん
2006/10/08(日) 17:16:30エディタしかないD言語だから、こういう話になるんだろ
0628デフォルトの名無しさん
2006/10/08(日) 17:17:01Dの開発環境が欲しいってんなら同意
0629デフォルトの名無しさん
2006/10/08(日) 17:21:190630デフォルトの名無しさん
2006/10/08(日) 18:09:140631デフォルトの名無しさん
2006/10/08(日) 18:10:280632デフォルトの名無しさん
2006/10/08(日) 18:24:450633デフォルトの名無しさん
2006/10/08(日) 18:29:220634デフォルトの名無しさん
2006/10/08(日) 18:34:14>Bug fixes. \dmd\samples\d\pi.d sped up by 40%.
乗算と除算の組み合わせに最適化が効いてなかったバグだから、
i * 10 / 2 → i * 5 みたいな修正じゃないのかな。
0635デフォルトの名無しさん
2006/10/08(日) 18:38:53dmdの最適化は結構しょぼいよ
0636デフォルトの名無しさん
2006/10/08(日) 18:45:55勘違いしてない?
a%5とa/5とかを一回で計算するっていう最適化の改良でしょ?
0637デフォルトの名無しさん
2006/10/08(日) 18:49:360638デフォルトの名無しさん
2006/10/08(日) 21:20:56Oct 7, 2006
New/Changed Features
Bugs Fixed
* Improved optimization of div/mod combinations.
一応はっておく。
0639デフォルトの名無しさん
2006/10/09(月) 00:39:23// main.d
import std.stdio;
class Sum {
int add(int x, int y) { return x + y + 1; }
unittest {
Sum sum = new Sum;
assert(sum.add(3,4) == 7);
assert(sum.add(-2,0) == -2);
}
}
void main() {}
> dmd -unittest main.d
C:\dmd\bin\..\..\dm\bin\link.exe main,,,user32+kernel32/noi;
>
0640デフォルトの名無しさん
2006/10/09(月) 00:41:53> main
Error: AssertError Failure main(7)
0641デフォルトの名無しさん
2006/10/09(月) 01:32:36↓
addメソッドが3 + 4 + 1 の 8 を 返す
↓
(8 == 7)が評価されてAssertExceptionが投げられる
↓
ユーザーコードで例外が補足されていないので
phobos\internal\dmain2.dのmain関数内(?)でcatchされて
"Error: AssertError Failure main(7)"と表示
↓
プログラム終了
unittestがどっかおかしい動きしてる?
main(7) が assert(sum.add(3,4) == 7); の行でいいんだよね?
0642デフォルトの名無しさん
2006/10/09(月) 01:56:38いつの間にかunittestがコンパイル時にチェックしてくれるものだと思ってた
実行しなきゃチェックされないじゃんってのが>>640
0643デフォルトの名無しさん
2006/10/09(月) 03:52:33リンカがphobos.libが見つからないというエラーを吐くんだが。
0.169で確認。これバグだよな?
>set A=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
>set A=%A%%A%%A%%A%%A%%A%%A%%A%%A%%A%%A%%A%%A%%A%%A%%A%%A%%A%%A%%A%
>dmd test
D:\dmd\dmd\bin\..\..\dm\bin\link.exe test,,,user32+kernel32/noi;
OPTLINK (R) for Win32 Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved
phobos.lib
Warning 2: File Not Found phobos.lib
OPTLINK : Warning 23: No Stack
test.obj(test)
Error 42: Symbol Undefined _main
test.obj(test)
Error 42: Symbol Undefined __acrtused_con
OPTLINK : Warning 134: No Start Address
--- errorlevel 2
test.dの中身はint main() { return 0; }だけ
0644デフォルトの名無しさん
2006/10/09(月) 06:05:01build entrypoint -gui -unittest -g -debug
打ってるけどさ、これを
build
これで済ませられれば良いよね。
makeみたいにbuildfileを参照して、
pragma文で全てのオプションを設定できるようになればなぁ
0645デフォルトの名無しさん
2006/10/09(月) 06:21:51でbuild.brfを参照する、くらいはできた気がした。
0646デフォルトの名無しさん
2006/10/09(月) 06:34:19>>645 �d!!
0647デフォルトの名無しさん
2006/10/10(火) 07:08:11if throw の使い分けがよう分からんのですが・・・
0648デフォルトの名無しさん
2006/10/10(火) 08:10:210649デフォルトの名無しさん
2006/10/10(火) 08:19:19だから、どういうものをリリース時にも残せばいいんだろうか・・・というやつ
0650デフォルトの名無しさん
2006/10/10(火) 08:23:180651デフォルトの名無しさん
2006/10/10(火) 17:12:06int x;
int opCmp(A o) {
return this.x < o.x;
}
};
while(true) {
A[] hoge;
hoge.length = (rand() % 10) + 2;
for(int i=0;i<hoge.length;i++) {
hoge[i].x = rand()%100;
}
int max=0;
for(int i=0;i<hoge.length;i++) {
writef(hoge[i].x, (i==hoge.length-1) ? "\n" : ",");
if(hoge[i].x > max)
max = hoge[i].x;
}
hoge.sort;
for(int i=0;i<hoge.length;i++)
writef(hoge[i].x, (i==hoge.length-1) ? "\n" : ",");
hoge.sort;
writefln("max = %d : hoge[0].x = %d", max, hoge[0].x);
assert(max == hoge[0].x);
writefln();
}
使い方まちがってる?
0652651
2006/10/10(火) 17:17:100653デフォルトの名無しさん
2006/10/10(火) 18:07:250654デフォルトの名無しさん
2006/10/10(火) 18:26:080655デフォルトの名無しさん
2006/10/10(火) 18:39:360656デフォルトの名無しさん
2006/10/10(火) 19:50:580657デフォルトの名無しさん
2006/10/10(火) 20:33:03()ないほうがいいな。うん。
0658デフォルトの名無しさん
2006/10/10(火) 20:40:420659デフォルトの名無しさん
2006/10/10(火) 20:42:44void function() fp = &A.func; は通るけど、fp をどう使ったらいいかわからん。
0660デフォルトの名無しさん
2006/10/10(火) 21:42:080661デフォルトの名無しさん
2006/10/10(火) 21:57:26http://www.kmonos.net/alang/d/type.html#delegates
0662デフォルトの名無しさん
2006/10/11(水) 00:18:28Dだと使えないはず。(近いものはdirty hackで作れるとは思うが)
0663デフォルトの名無しさん
2006/10/11(水) 03:30:580664デフォルトの名無しさん
2006/10/11(水) 05:43:040665デフォルトの名無しさん
2006/10/11(水) 06:56:05>>662 の意味のつもりでしたが、D では使えませんか。
とりあえずは、以下のコードで逃げることにしました。
struct D { void* ptr; void function() fp; }
(cast(D*) &dg).ptr = obj;
(cast(D*) &dg).fp = &A.func;
0666デフォルトの名無しさん
2006/10/12(木) 17:10:50build
だけで一応build.brfを参照して機能してくれるみたい。
つまり>>644の求める機能は既にあったってことだな
0667デフォルトの名無しさん
2006/10/14(土) 11:13:52buildをビルド出来ないじゃないか…
0668デフォルトの名無しさん
2006/10/14(土) 11:23:45最新のtrunkのgdcはdmd 0.164ベースだからそれ使え
0669デフォルトの名無しさん
2006/10/14(土) 12:19:15ttp://www.codu.org/gdc-nightly/
0670デフォルトの名無しさん
2006/10/14(土) 20:47:25しかし配列リテラルがサポートされたのは素直に嬉しいなぁ。
char[][] names = ["alice", "bob"];も通らない悲しい現状ではあるけど……。
0671デフォルトの名無しさん
2006/10/14(土) 21:15:07>[cast(Object)null] == [cast(Object)null]がError: Access Violationなこの現実。
仕様じゃね?
>char[][] names = ["alice", "bob"];
通るよ?(dmd 0.169)
0672670
2006/10/14(土) 22:42:14>>[cast(Object)null] == [cast(Object)null]がError: Access Violationなこの現実。
>仕様じゃね?
うーむ、そーなんだろーか。ちなみにcast(Object[])[null] == cast(Object[])[null]のほうが分かりやすいと今思った。
考えてみれば比較をopEquals()でする以上、左の要素にnullが来たらopEquals呼べないのは分からなくもないし、
[null] == [null]は通るけどそれはvoid*配列だからだし。
……やっぱりnull同士をtrueにするくらい気を利かせてくれてもいいような。
>>char[][] names = ["alice", "bob"];
>通るよ?(dmd 0.169)
ウェェ!? まぢで? うちのv0.169 dmd.exeは
cannot implicitly convert expression ("bob") of type char[3] to char[5]
と叫んでるんですが……。配列の型は最初の要素のになる、ってやつ。
char[][] names = [cast(char[])"alice", "bob"]; とかしなくてもいいのか!?
0673デフォルトの名無しさん
2006/10/14(土) 22:44:32イラネ
0674デフォルトの名無しさん
2006/10/14(土) 23:27:38いや、勘違いだった。通らないね。
別のソースでやったときは、要素数が全て同じデータを使ってたんだった。
0675デフォルトの名無しさん
2006/10/15(日) 02:15:06がグローバルスコープにある場合は静的初期化扱いになるのか通るな。
なんにしろ、[cast("alice"[], "bob"] で済むから手間じゃないとは思う。
0676デフォルトの名無しさん
2006/10/15(日) 03:12:380677デフォルトの名無しさん
2006/10/15(日) 16:39:18部分特殊化するにはどうすれば良いのでしょうか
C++で次みたいなの
template <int x>
struct holder { static int const value = x; };
template <typename T>
struct hoge { static int const value = 0; };
template <int x>
struct hoge<holder<x> > { static int const value = x; };
int main()
{
std::cout << hoge<int>::value << std::endl;
std::cout << hoge<holder<5> >::value << std::endl;
}
// D
struct holder(int x) { static const value = x; };
struct hoge(T) { static const value = 0; };
struct hoge(T: /* ? */) { };
void main()
{
dout.writefln(hoge!(int).value);
dout.writefln(hoge!(holder!(5)).value);
}
0678デフォルトの名無しさん
2006/10/15(日) 16:48:57http://digitalmars.com/d/template.html#aliasparameters
0679デフォルトの名無しさん
2006/10/15(日) 17:06:05テンプレートテンプレートパラメータが欲しいという話ではないです
テンプレートに渡された型が特定のテンプレートの
specializationとなっているかどうかで分岐したいのです
それともaliasでそういったことが出来るという事でしょうか
0680デフォルトの名無しさん
2006/10/15(日) 17:45:16できなくも無いです。
struct hoge(alias T) {
static if(isHolder!(T.mangleof)){
//色々
}else
static assert(0);
};
0681デフォルトの名無しさん
2006/10/15(日) 18:11:49マングル名からholderのspecializationかどうか判別するのですか・・・
すごく強引な気がしますが、やっぱりそういう方法しか無いんですかね
0682デフォルトの名無しさん
2006/10/15(日) 19:39:06繋がらないんだが。
0683デフォルトの名無しさん
2006/10/15(日) 19:41:18落ちてるね。
今までもたまに落ちてたから心配しなくても大丈夫だと思う。
0684デフォルトの名無しさん
2006/10/15(日) 20:47:37import std.stdio;
struct holder(int x) {
static const val = x;
alias int unique_alias_id; // ごまかし
}
struct hoge(T) { static const value = 0; }
struct hoge(alias T) {
static if(is(T.unique_alias_id)) { // ここで判断
static const value = T.val;
} else {
static assert(0);
}
}
void main()
{
writefln(hoge!(int).value);
writefln(hoge!(holder!(5)).value);
}
ここまではがんばってみた。
0685デフォルトの名無しさん
2006/10/16(月) 14:05:56unique_alias_idを工夫すればなんとかなりそうな気がしますね
ありがとうございます
0686デフォルトの名無しさん
2006/10/17(火) 12:29:170687デフォルトの名無しさん
2006/10/17(火) 23:11:410688デフォルトの名無しさん
2006/10/17(火) 23:45:40もうちょっと何とかならなかったのかこの名前は
0689デフォルトの名無しさん
2006/10/17(火) 23:55:46まあ次のバージョンであっさり名前変更されてる可能性もなきにしもあらず
0690デフォルトの名無しさん
2006/10/17(火) 23:57:040691デフォルトの名無しさん
2006/10/18(水) 00:00:55・ Delegates can now be the 'aggregate' for the foreach.
の意味がよく分かりません!
あとforeach_reverse作るくらいならいっそRubyライクなイテレータを(ry
0692デフォルトの名無しさん
2006/10/18(水) 00:04:160693デフォルトの名無しさん
2006/10/18(水) 00:11:21翻訳を見ると、
foreachの集成体として、delegateを指定することができるようになった、と。
たとえば、opApplyはクラスに一つだけど、
class Hoge {
int opApply((int delegate(inout uint) dg) { }
int hogeApply((int delegate(inout uint) dg) { }
}
とかやっておいて、
foreach(int i; &hoge.hogeApply) { ... }
って感じかな?
まだ試してないけど。
0694デフォルトの名無しさん
2006/10/18(水) 00:13:11オペランドの可換性とは関係ないから、あえてそれにしなかったと思う。
0695デフォルトの名無しさん
2006/10/18(水) 00:28:34にゃるほど。
そいや「左右入れ替え」と「逆方向に辿る」てのもびみょーがニュアンスが違うか……。
0696デフォルトの名無しさん
2006/10/18(水) 00:42:58ご所望のものが実装されたようです
0697696
2006/10/18(水) 00:46:16if (null == null) じゃなくて if ([cast(Object)null] == [cast(Object)null]) か
0698691
2006/10/18(水) 02:40:28実験してみた。そうらしい。
いまいちすっきり書けないのはbreakサポートの仕様の為。>>698は自分にそう言い聞かせた。
class IntList{
int[] values;
this(int[] values){ this.values = values; }
/** 0でない要素だけを列挙する */
int without0(int delegate(inout int) eachBody){
int result = 0;
foreach(value; this.values){
if(value == 0){ continue; }
result = eachBody(value);
if(result){ break; }
}
return result;
}
}
unittest{
IntList sources = new IntList([1, 0, 2, 0]);
int[] results;
foreach(i; &sources.without0){
results ~= i;
}
assert(results == [1, 2]);
}
無名デリゲートと組み合わせて呼ぶ方が自由度が高いかなー。foreachの仕様に合わせる必要がない分。
sources.without(2, (int i){ results ~= i; }); とかも書けるし。
sources.without(2) : (int i){ results ~= i; }; とか、無名デリゲートの部分を引数の外に追い出せたら最高なんだけど。
0699デフォルトの名無しさん
2006/10/18(水) 07:55:30mixinとか使って変なことはできそう。
(今までクラステンプレートでできたのと同様のことしか
できないのかもしれないけど)
template agg(alias array){
auto agg = (int delegate(inout int) dg){
int result;
for(int i=0; i<array.length; i++){
if(array[i]==0){ continue; }
result = dg(array[i]);
if(result){ break; }
}
return result;
};
}
unittest{
int[] a = [0,1,2,3,4];
mixin agg!(a);
foreach(inout int n; agg){ n += 2; }
assert(a==[0,3,4,5,6]);
}
しかしそんなことをするために追加されたわけではなくて、既出のように
クラスに複数のonApply相当を定義するために作られたそうだね。
http://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D&artnum=17397
>>698
> 無名デリゲートと組み合わせて呼ぶ方が自由度が高いかなー。foreachの仕様に合わせる必要がない分。
Dの、なんでも言語仕様でサポートしよう、という方針の表れのひとつで、
要素の巡回はできる限りforeachで扱うようにしなさい、ということかもしれない。
0700デフォルトの名無しさん
2006/10/18(水) 11:03:25int opApply( int delegate(inout T) dg ) {
nanika_loop {
... v = 列挙される値 ...
if( int r = dg(v) ) return r; // ここ
}
return 0; // ここ
}
どうせこうなるのだから、returnとか書くのめんどいのでもうちょいスッキリ書けるような
mixinかなにか作れないかなーと思った。思っただけでその先なにも考えてないが。
0701デフォルトの名無しさん
2006/10/18(水) 11:38:31こんなふうにとか?
int opArray(alias initfunc,alias func)(int delegate(inout T) dg){
initfunc();
auto v = func();
if(!v)return 0;
do {
if( int r = dg(v) ) return r;
}while(v = func());
return 0;
}
class Test{
private static int i;
mixin opArray!({i=5;},delegate int(){return i--;});
}
0702デフォルトの名無しさん
2006/10/18(水) 11:47:20int opArray(alias initfunc,alias func)(int delegate(inout typeof(func())) dg){
initfunc();
auto v = func();
if(!v)return 0;
do {
if( int r = dg(v) ) return r;
}while(cast(bool)(v = func()));
return 0;
}
private int i;
mixin opArray!({i=5;},delegate int(){return i--;});
0703デフォルトの名無しさん
2006/10/18(水) 14:13:23Oct 17, 2006
New/Changed Features
* foreach_reverseを追加
* foreachの集成体としてデリゲートが使えるようになった。
* オーバーライドされていないfinalメンバ関数は、_vtbl[]に配置されないようになった。
そのようなクラスから派生しているクラスを使用しているコードは再コンパイルする必要がある。
* nullはヌルポインタ、デリゲート、配列、クラスオブジェクトなどと正確に比較するようになった。
0704デフォルトの名無しさん
2006/10/18(水) 19:28:42Bugs Fixed
Incorporating overlooked Bugzilla 429 change.
Fixed Bugzilla 440: dmd.170 fails to mark final methods as implementations of abstract ones
0705デフォルトの名無しさん
2006/10/18(水) 19:32:070706デフォルトの名無しさん
2006/10/18(水) 21:08:10( ´∀`)ははは、こやつめ!
0707デフォルトの名無しさん
2006/10/18(水) 21:28:472段継承するとまだダメらしい
0708デフォルトの名無しさん
2006/10/19(木) 00:20:240709デフォルトの名無しさん
2006/10/19(木) 01:03:19----------
フリーザAA
----------
0710デフォルトの名無しさん
2006/10/19(木) 03:43:20インテリセンス互換かつ、使用クラス内部へ飛ぶ機能かつ、API Docを参照する機能。
この3つは最低限必要だと思う。
0711デフォルトの名無しさん
2006/10/19(木) 04:41:180712デフォルトの名無しさん
2006/10/19(木) 06:07:05D言語は多分コケると思っている人の数→
http://pc8.2ch.net/test/read.cgi/tech/1136288019/251
0713デフォルトの名無しさん
2006/10/19(木) 08:17:58あと今回のことでやっぱりここはウォルターたんに萌えるスレだと再認識した
0714デフォルトの名無しさん
2006/10/19(木) 08:24:520715デフォルトの名無しさん
2006/10/19(木) 08:29:26* Fixed again Bugzilla 440: dmd.170 fails to mark final methods as implementations of abstract ones
* Fixed Bugzilla 441: Crash on foreach of mixed-in aggregate
* Fixed Bugzilla 442: Crash on foreach of mixed-in aggregate
1日に2個(向こうの時間で)バージョンアップってどうだろう
0716デフォルトの名無しさん
2006/10/19(木) 09:13:02しといたほうが用意するのは面倒だけど、
開発効率と品質が格段に上がるのに
0717デフォルトの名無しさん
2006/10/19(木) 09:20:590718デフォルトの名無しさん
2006/10/19(木) 10:10:140719デフォルトの名無しさん
2006/10/19(木) 12:28:42逆に考えるんだ
もう完成していると考えるんだ
D0.172言語と考えるんだ
今、IDEをDで作るのが如何に無謀かよく理解できた
0720デフォルトの名無しさん
2006/10/19(木) 12:37:02とかはしないんだろか。
あんまり効果無いかな……
0721デフォルトの名無しさん
2006/10/19(木) 13:51:14あれ・・・こんなんあったのか
さっさとリリースしてくれればいいのに
前のListViewのバグ直ってたりするのかな?
調べてみよう
0722721
2006/10/19(木) 14:02:15直ってません
うはははは
0723721
2006/10/19(木) 17:27:50// dfl\control.d 4166行目から
tme.cbSize = TRACKMOUSEEVENT.sizeof;
tme.dwFlags = /*TME_HOVER | */TME_LEAVE; // 余計なフラグを立ててやがった
tme.hwndTrack = msg.hWnd;
参考1) http://park17.wakwak.com/~dragoon/mouseleave.htm
参考2) http://search.acty-net.ne.jp/mfc_search/archive/1998-2/msg00827.html
シンボルGUIDが見つからないとか言われたのでwin32.winntの最初のほうでpublic:を追加した.
version=IE6を忘れずにコンパイル.パスは適当に合わせて.
build test.d -full -clean -d -version=IE6 -Ic:\d\dmd\import\ -LIBPATH=c:\d\dmd\lib
0724721
2006/10/19(木) 17:29:48// test.d
import dfl.all;
import win32.windows;
import win32.commctrl;
class MyForm : Form {
this() {
with (list = new ListView) {
parent = this;
hoverSelection = false; // trueに変えてみるよろし
auto col = new ColumnHeader;
col.width = 100;
columns.add(col);
items.add("hoge");
items.add("HOGE");
}
}
private ListView list;
}
void main() {
Application.run(new MyForm);
}
0725721
2006/10/19(木) 17:36:26//import win32.windows;
//import win32.commctrl;
これいらんので,必然的にwin32.winntの話もversion=IE6も関係ないです.
長々と失礼しました.まだミスあったらごめんよ.
0726デフォルトの名無しさん
2006/10/19(木) 19:07:41dmdにPATH通して、sc.iniの中が適切なら
-Ic:\d\dmd\import\ -LIBPATH=c:\d\dmd\lib
も、いらんよ。
0727721
2006/10/19(木) 19:44:40頻繁に更新されるから設定が面倒だったのでsc.iniを使ってなかったです
0728デフォルトの名無しさん
2006/10/19(木) 19:50:36超なるほど
0729デフォルトの名無しさん
2006/10/19(木) 19:58:180730デフォルトの名無しさん
2006/10/19(木) 20:23:160731デフォルトの名無しさん
2006/10/19(木) 20:34:100732デフォルトの名無しさん
2006/10/19(木) 20:57:10それだ。
0733デフォルトの名無しさん
2006/10/19(木) 21:02:430734デフォルトの名無しさん
2006/10/19(木) 21:14:19cygwin 入れてるんでこんな dmd_update.bat 作ってるわ
make は 別のやつ使ってるから削除するようにしてある
前の sc.ini も残すようにしようかな
mkdir c:\temp
cd c:\temp
del dmd.zip
wget http://ftp.digitalmars.com/dmd.zip
unzip dmd.zip
rm dmd\bin\make.exe
rm dm\bin\make.exe
cp -r dmd\ c:\
cp -r dm\ c:\
rm -r dmd\
rm -r dm\
0735デフォルトの名無しさん
2006/10/19(木) 22:24:400736デフォルトの名無しさん
2006/10/20(金) 05:30:080737デフォルトの名無しさん
2006/10/20(金) 09:09:01ひげぽんがそう発言してるの?
0738デフォルトの名無しさん
2006/10/20(金) 09:21:58ちゃんとMonaOSプロジェクト内での話なのね。
なんかphobosサポートが悲惨で大変のようだけど。(castもできないそうな)
0739デフォルトの名無しさん
2006/10/21(土) 14:18:21ソースは?
しかし、本当なら、ひげぽんもたいしたやつだ(いろんな意味で
0740デフォルトの名無しさん
2006/10/22(日) 00:59:44http://wiki.monaos.org/pukiwiki.php?cmd=read&page=%B5%C4%CF%C0%2F%B8%C0%B8%EC%BE%E8%A4%EA%B4%B9%A4%A8&word=D%B8%C0%B8%EC
それとは別にgdcをlibphobosなしで移植してみよう、という試みも。順調っぽい。
http://wiki.monaos.org/pukiwiki.php?cmd=read&page=gdc&word=D%B8%C0%B8%EC
0741デフォルトの名無しさん
2006/10/22(日) 01:02:190742デフォルトの名無しさん
2006/10/23(月) 12:19:23const char[0] g = "";
static assert(g=="");
static assert ((g) == "") is not evaluatable at compile time となる。
これは通る。
const char[] g = "";
static assert(g=="");
なぜだろうか。
0743デフォルトの名無しさん
2006/10/23(月) 12:22:570744デフォルトの名無しさん
2006/10/23(月) 13:52:47template g(char[] s){}
g!((f!())[0]) hoge;
でdmdがこける。
Assertion failure: 'e1->type' on line 5485 in file 'expression.c'
0745デフォルトの名無しさん
2006/10/25(水) 05:50:590746デフォルトの名無しさん
2006/10/25(水) 05:58:150747デフォルトの名無しさん
2006/10/25(水) 10:07:52あるよ
0748デフォルトの名無しさん
2006/10/27(金) 13:13:480749デフォルトの名無しさん
2006/10/27(金) 13:35:17このスレは要望を書き込む場所ではありません。
開発者(Walterタソ)が、わざわざこんなスレに目を通すわけがないのです。
要望は、http://www.digitalmars.com/d/ へ。
0750デフォルトの名無しさん
2006/10/27(金) 22:28:100751デフォルトの名無しさん
2006/10/27(金) 23:20:150752デフォルトの名無しさん
2006/10/28(土) 19:40:510753デフォルトの名無しさん
2006/10/28(土) 19:57:02ソースURLおせーて
0754デフォルトの名無しさん
2006/10/28(土) 20:02:380755デフォルトの名無しさん
2006/10/28(土) 20:15:350756デフォルトの名無しさん
2006/10/28(土) 20:25:04トレードオフ的にオプションを切り替えられるっといいのだが。
0757デフォルトの名無しさん
2006/10/28(土) 22:17:50SML#なる言語のドキュメントはコレくらいしか見つからないなぁ。
ビットマップ走査型GCてどんなだろ。GCの理屈なんて概要しか知らないけど……。
あとGCを実際にカーネルサービスとしてサポートしてるOSて、実例はあるんだろか。
Javaで書かれてるとゆーJNodeとか……?
0758デフォルトの名無しさん
2006/10/28(土) 23:31:22いやGCとしてとかじゃなくて、現実的に。
0759デフォルトの名無しさん
2006/10/29(日) 00:13:580760デフォルトの名無しさん
2006/10/29(日) 05:39:19最強なんて中学生ワードはむしろ成熟した概念
0761デフォルトの名無しさん
2006/10/29(日) 21:25:00世代別GCより速いも何も、じゃあ世代別GCをどう実装すんのよ.
ぜんぜん何も語ってないに等しいじゃねーか.
たとえば java だと若い世代と古い世代と恒久世代に分けて,
若い世代は Mark & Sweep GC, 古い世代は Copying GC なわけだ.
もちろん Mark & Sweep にも Copying GC も色々な種類があるわけだ.
何も知らないくせに「世代別GCで最強」で終わりじゃ無知を晒してるだけだぞ.
0762デフォルトの名無しさん
2006/10/29(日) 21:35:07お前はただ語りたいだけでは?
0763デフォルトの名無しさん
2006/10/29(日) 21:56:01何も知らない割には負けず嫌いなんだな(禿藁
>>761 に誤りがありました.
若い世代が Copying GC で古い世代が Mark & Sweep です.
謹んで訂正させていただきます.
0764デフォルトの名無しさん
2006/10/29(日) 22:28:360765デフォルトの名無しさん
2006/10/29(日) 22:51:480766デフォルトの名無しさん
2006/10/29(日) 22:52:07流石専門板だなぁ・・・・・(禿藁なんて久しぶりに見た
0767デフォルトの名無しさん
2006/10/29(日) 23:00:050768デフォルトの名無しさん
2006/10/30(月) 00:03:07こういうときにするべきレスはただ一つ
>>764
ググレカス
0769デフォルトの名無しさん
2006/10/30(月) 00:05:020770デフォルトの名無しさん
2006/10/30(月) 00:09:55…ってレスつけようとしたけど思い止まった
オレ偉い
0771デフォルトの名無しさん
2006/10/30(月) 00:28:02メモリを確保するときにメモリ内のポインタの位置を記憶するための、
ビットマップというデータを作成してそれを元にメモリを解放していく
…という感じみたい
Dみたいにポインタ型以外の変数にもポインタを格納することがある言語には使えないんじゃないかな
SML#は関数型言語らしいからそこら辺は上手くクリア出来るんだろう
(関数型言語は変数がいらないんだっけ?)
0772デフォルトの名無しさん
2006/10/30(月) 20:42:59移動が非常に難しいから、世代別GCは実装できない。
0773デフォルトの名無しさん
2006/10/30(月) 22:49:000774デフォルトの名無しさん
2006/10/31(火) 02:50:59> 世代型のコピーGCには、 昔のマーク&スイープアルゴリズムの非効率さはありません。
とか本家には書いてるけど、D言語のGC実装が世代型だ、とは言ってないのね。
>GCは次のステップで動作しています:
>
> 1. GCで確保された領域を指す 'root' ポインタを全て列挙します。
> 2. rootから指されている領域内から、 再帰的にGCメモリ領域内を指しているポインタを探索します。
> 3. GCで割り当てられた領域のうち、 生きたポインタで指されていないことが分かった領域を全て開放します。
> 4. 残ったメモリ領域のデータをコピーして使用領域をまとめる処理 (コピーGCと呼ばれます) が実行される可能性があります。
これってMark&Compactionて言うやつ? 4は”コンパクション”ではないんだろうか。
いずれにせよ、世代化に限らず最適化の余地はある気はする。
あと、調べてるうちに「GCなんてOSでサポートしる!」て言う気持ちが分かってきた気がする……。
世の中にはGCにハードウェアのサポートを利用する代物もあるというのに。
0775デフォルトの名無しさん
2006/10/31(火) 08:18:46ネイティブでも世代別GCとかを実装出来るんだろうな
と勘で言ってみる
0776デフォルトの名無しさん
2006/10/31(火) 10:56:290777デフォルトの名無しさん
2006/10/31(火) 12:25:59昔R4400で試したけどあんまり良い結果でなかった。
0778デフォルトの名無しさん
2006/10/31(火) 19:53:230779デフォルトの名無しさん
2006/10/31(火) 21:45:20唯一のC/C++使いとしてApacheモジュール作りとかで重宝されてる。
0780デフォルトの名無しさん
2006/10/31(火) 23:26:140781デフォルトの名無しさん
2006/10/31(火) 23:26:440782デフォルトの名無しさん
2006/11/01(水) 01:13:170783デフォルトの名無しさん
2006/11/01(水) 01:27:470784デフォルトの名無しさん
2006/11/01(水) 05:25:300785デフォルトの名無しさん
2006/11/01(水) 07:41:18内容がまるで追いついてないのが愉快だからイジられてるだけ。
0786デフォルトの名無しさん
2006/11/01(水) 13:35:27>>799を読むとHatenaのレベルが怪しく見えちゃうのはしょうがないんじゃなかろうか?
てか本当に唯一なのか?
0787デフォルトの名無しさん
2006/11/01(水) 13:36:31>>786における>>799は>>779の誤りです おいらレベルヒクス
0788デフォルトの名無しさん
2006/11/01(水) 17:47:32Hatenaという会社はアプリ製作屋ではなくてWEB屋でLLでの開発が主だから
会社の性質上C/C++の必要度は高くないから
C/C++のコーディングレベルという意味でのレベルはそんなに高くないでしょ。
でも、他の部分の技術力が高いのかって言うと
誤字や間違った訳・解説が多い、はてな監修のAjaxイン・アクションの訳本や
CTOのblogを読む限り他の部分の技術力もかなりアレだけどね…
0789デフォルトの名無しさん
2006/11/01(水) 21:23:46似たようなとこはあるんだろうけど露出の差がダンチ
0790デフォルトの名無しさん
2006/11/02(木) 14:10:510791デフォルトの名無しさん
2006/11/02(木) 16:38:390792デフォルトの名無しさん
2006/11/02(木) 16:41:200793デフォルトの名無しさん
2006/11/02(木) 17:18:320794デフォルトの名無しさん
2006/11/02(木) 18:10:500795デフォルトの名無しさん
2006/11/02(木) 18:18:48Nov 1, 2006
New/Changed Features
* Template instantiations can now accept alias parameters for local variables and nested functions.
* Enhancement Bugzilla 333 std.c.locale
* Implemented Signals and Slots.
* Incorporated D.announce/5104 as std.cpuid.
* Implemented variadic template parameters
0796デフォルトの名無しさん
2006/11/02(木) 18:53:11ローカルシンボルのテンプレートalias引数が
可能になりました、という話かな。
0797デフォルトの名無しさん
2006/11/02(木) 18:53:270798デフォルトの名無しさん
2006/11/02(木) 19:38:50ソースコード中の例はみたけど、意義がよく分からんかった。
0799デフォルトの名無しさん
2006/11/02(木) 21:03:20(ライブラリとして)標準化するためのもの、って感じかな。
0800デフォルトの名無しさん
2006/11/02(木) 21:56:48void Foo(R...)(R r){
writefln(R.length);
writefln(r.length);
// R[0] t;//faild
typeof(r[0]) t;//ok
static if(r.length>1)
Foo(r[1..$]);
}
void main(){
Foo(1, 'a', 6.8);
}
0801デフォルトの名無しさん
2006/11/03(金) 23:58:23Signal-Slotて「さらにもう一つのコールバック方式」って感じにしか思えないんだよなぁ……。
delegateとどう使い分けるべきなのか、誰か教えてほすぃ……。
まぁそれより俺は可変個引数テンプレートにおおっと思ったところだが。
0802デフォルトの名無しさん
2006/11/04(土) 06:58:22いつもはdelegate使っててSignal-Slotが必要になってから使えばいい。
Signal-Slotが必要な状況は特に思いつかないが。
0803デフォルトの名無しさん
2006/11/05(日) 00:52:480804デフォルトの名無しさん
2006/11/05(日) 01:03:28でもなんで古いのが欲しいの?
0805デフォルトの名無しさん
2006/11/05(日) 01:09:060806デフォルトの名無しさん
2006/11/05(日) 01:50:45でもなんか最新のコンパイラで通らないような古いライブラリを使うのはなんだが気が引けるような。
0807805
2006/11/05(日) 01:59:24かなりの手直しに「ムガー」っと思わされながらも最新版を追い続けちまう。
0809デフォルトの名無しさん
2006/11/05(日) 18:31:56静的コンストラクタの呼び出しがdiファイルに出てこないもんだから、自動初期化が利用できないのね。
diの末尾に
static this(){ _moduleCtor(); }
とか追加したらいい感じに動いてくれたけど、これでいいのだろうか……。
0810デフォルトの名無しさん
2006/11/06(月) 00:41:32モジュールコンストラクタを呼び出すってあるけど、それって?
これ以上詳しいことが俺が探す限りどこにも乗ってない。
0811デフォルトの名無しさん
2006/11/06(月) 01:26:27とりあえず>>7のWin32をsrc\phobosの中に入れてやってるんですが、
2重定義とかどうやって回避すればええんでしょうか?
ツリービューとか表示しようとしたら途端に上手くいかなくなりました。
0812デフォルトの名無しさん
2006/11/06(月) 02:06:570813デフォルトの名無しさん
2006/11/06(月) 05:32:18インポートパス通ってるからとりあえずつっこんでるだけかと思われるが。
0814デフォルトの名無しさん
2006/11/06(月) 08:32:14くだんのwin32はいれてあるがそれを直接使うことはまずないなあ。
GUIアプリは主にDFL。
デファクトスタンダードはどうもDWTのようだが。
ゲームはSDLのポーティングを使うのが主流では?
0815デフォルトの名無しさん
2006/11/06(月) 08:34:32くだんのwin32はいれてあるがそれを直接使うことはまずないなあ。
GUIアプリは主にDFL。
デファクトスタンダードはどうもDWTのようだが。
ゲームはSDLのポーティングを使うのが主流では?
0816デフォルトの名無しさん
2006/11/06(月) 10:38:57phobosのソース見れば分かると思うよ
0817デフォルトの名無しさん
2006/11/06(月) 12:03:20http://www.kmonos.net/alang/d/module.html
の最後のあたりに書いてある静的コンストラクタの類。
このへんを明示的に呼び出すのに使う。……はず。
そいや静的デストラクタはどうやって呼ぶんだ。
0818817
2006/11/06(月) 12:04:32ごめん普通に_moduleDtor()があったorz
0819デフォルトの名無しさん
2006/11/06(月) 15:34:24やっとTreeView表示できた。
うれC〜
0820デフォルトの名無しさん
2006/11/06(月) 17:31:17int main()
{
gc_init();
_minit();
try {
_moduleCtor();
_moduleDtor();
}
catch (Object o) {
writefln(o.classinfo.name ~ ": " ~ o.toString);
}
gc_term();
return 0;
}
0821デフォルトの名無しさん
2006/11/06(月) 17:42:530822デフォルトの名無しさん
2006/11/06(月) 20:01:32それは「Dで作るWin32アプリ」がしたいってこと?
だとしたらmain()じゃなくてWinMain()ではないかと思う。
0823デフォルトの名無しさん
2006/11/06(月) 21:42:41class C { A a() { return new A; } }
void main() { (new C).a ~= "str"; }
op*Assign 使用時に a の括弧を省略した場合にエラーが出るのは仕様?
0824デフォルトの名無しさん
2006/11/07(火) 00:19:34http://www.kmonos.net/alang/d/property.html
> 注意: プロパティは現在の所、 op=, ++, -- 演算子のlvalueとすることはできません。
だそうな。つまり仕様だね。
0825デフォルトの名無しさん
2006/11/07(火) 23:59:150826デフォルトの名無しさん
2006/11/08(水) 01:08:16スタートアップ?dmain2.dってやつですか?
中身見てみたけど、自分のソースでmoduleCtorやらは呼び出さなくて良いって事?
そしてエントリーポイントをWinMainとかに変える時には明示的に呼び出さないとダメ、ってことなんですか?
聞いてばっかですんません
0827デフォルトの名無しさん
2006/11/08(水) 07:30:32つdmd\samples\d
0828デフォルトの名無しさん
2006/11/08(水) 12:41:41そう。普通にmainからスタートするときは
dmain2.dのmain → ユーザーの書いたmain
の順で実行されるから自分のmainでmoduleCtorとかは呼ばなくていいっつーか呼んじゃダメ。
その変の初期化関数を呼んでいいのはエントリポイントを変えてmain以外にしたときだけ。
なので>>809みたいになるはバグだと思うんだけどよーわからん。
0829デフォルトの名無しさん
2006/11/09(木) 01:35:48やり方わかりませんか。
0830デフォルトの名無しさん
2006/11/09(木) 15:03:03if( ea.data.getDataPresent(DataFormats.fileDrop))
{
Data data = ea.data.getData("FileName");
wchar[] text = data.getUnicodeText;
MessageBoxA(null, cast(char*)text , "test", MB_OK);
}
なんか"FileName"と入れてみたらパスが沸いて出た・・・
FileNameoとかFileNameWとかFileNamelとかがあったみたいだけど、
なんの事かわからん。。。
0831デフォルトの名無しさん
2006/11/10(金) 18:30:25D 1.0 for Jan 1, 2007
We'll release it one way or another Jan 1. And then we'll move on!
楽しみだー
0832デフォルトの名無しさん
2006/11/10(金) 18:38:28同名のネストしたテンプレートをうまく実体化できない、テンプレートの引数に関数やデレゲートや配列やstructが使えない、switchには配列やstructは使えない、structリテラルが無い。
このへん1.0までになんとかして欲しいわな。
0833デフォルトの名無しさん
2006/11/10(金) 18:47:180834デフォルトの名無しさん
2006/11/10(金) 18:48:19D言語では構造体は値型。
0835デフォルトの名無しさん
2006/11/10(金) 20:34:11そういうことではなくて、あったら何が便利なの?ということを教えてほしい。
ちょっと興味があるので。
0836デフォルトの名無しさん
2006/11/10(金) 21:27:30ほんとに1.0出るかな〜
長引いているのは今更のことなんだし
ウォルたんには急いで1.0リリースよりも納得いくまで作り込んで欲しい
こんな贅沢なことはそうそうできないだろうな
0837デフォルトの名無しさん
2006/11/10(金) 21:30:38・・・早くて。
0838デフォルトの名無しさん
2006/11/10(金) 21:40:220839デフォルトの名無しさん
2006/11/10(金) 22:37:52既に他の言語で言うVer1.0くらいの機能は有ると思うんだがなぁ
0.99→0.100の時は怒りを通り越して呆れたよw
0840デフォルトの名無しさん
2006/11/10(金) 22:39:47冷静だったヤツにむかついた。お前らもっと夢を見ようよみたいな。
0841デフォルトの名無しさん
2006/11/10(金) 22:46:45途中のバージョン番号がかなり飛び飛びだからなあ。
嫌でも現実の予想がつくよ。
だから、逆にそこで1.00になってたら大驚きだったろうな。
しかし、2007/01で1.0というと、もう今後大きな仕様変更は来ないのかなあ。
0842デフォルトの名無しさん
2006/11/10(金) 22:52:220843デフォルトの名無しさん
2006/11/10(金) 22:58:29ライブラリは、取り合えず
メジャーバージョンが出ないと
出すに出せないんじゃね
0844デフォルトの名無しさん
2006/11/10(金) 23:04:581.0>2.0>…>8.0>9.0>01.0>11.0>21.0>…
…>99.0>00.1>10.1…
うわ、分かり肉!
ところで、1.00のあとはアスペクト指向辺りをなんて
0845デフォルトの名無しさん
2006/11/10(金) 23:06:26コンパイルするとOSに合わせてdllなりsoなりに勝手に切り替わるといいなぁ
もしそれが可能ならJava並みにモジュールの肥大化が加速して楽しめると思う
0846デフォルトの名無しさん
2006/11/10(金) 23:41:17本気なのかな?
キリスト教圏の人間だと新年よりクリスマスに出してきそうなもんだが。
(基本的にクリスマスから新年までお休みだからね)
マジなら良いお年玉になるが。
0847デフォルトの名無しさん
2006/11/10(金) 23:58:31少数点数だった場合
0.96 > 0.97 > 0.98 > 0.99 > 0.991 > ... > 0.999 > 0.9991 > ...
0848デフォルトの名無しさん
2006/11/11(土) 00:02:20確かにw
Dなら巨大な変更があるときに1.0にしてもおかしくないと冗談で思える
>>844
アスペクト指向って実は有効範囲が狭いし流行らないんじゃないかと
0849デフォルトの名無しさん
2006/11/11(土) 01:25:531.0になったら1週間で10回くらいバグフィックスしそうだな
0850デフォルトの名無しさん
2006/11/11(土) 03:12:212007/1/3 D ver1.09
2007/1/10 D ver1.3
2007/1/31 D ver 2.0
この調子だ
0851デフォルトの名無しさん
2006/11/11(土) 11:13:100852デフォルトの名無しさん
2006/11/11(土) 15:10:440853デフォルトの名無しさん
2006/11/11(土) 19:22:08足並みそろえる口実が出来ると歓迎しよう……。
2007年はD言語の年ってか。ワクテカ。
……むしろD言語開発中に新たに学んだ事をまとめて
E言語とか出てくるんじゃないかとちょっと思ってた。
あ、E言語もうあるや。
0854デフォルトの名無しさん
2006/11/11(土) 19:24:320855デフォルトの名無しさん
2006/11/11(土) 23:38:13ver1.0マダーーーーーッ?
0856デフォルトの名無しさん
2006/11/12(日) 00:14:140857デフォルトの名無しさん
2006/11/12(日) 00:38:24"hogehoge"という文字列を渡されたら
hogehogeという名前の変数を宣言する、
とか、
obj.hogehogeというメソッドを呼び出す、
とか、
テンプレートかなんかで実現出来る?
0858デフォルトの名無しさん
2006/11/12(日) 01:36:32テンプレートだと無理なんじゃないかね。
テンプレートって静的処理でしょ。
0859デフォルトの名無しさん
2006/11/12(日) 02:03:32不可能……だろうなぁ。コンパイラは文字列の中身までタッチはしないし。
せいぜい出来てテンプレートの値パラメータくらいか。
0860デフォルトの名無しさん
2006/11/12(日) 02:24:53コンパイル時に処理できる文字列を想定してた。
template T(char[] id,int n){
static if(n>0){
int str2id(id~itoa!(id)) = n;
mixin T!(id,n-1);
}
}
とかそんなんできないかなーと思って。
(itoaは整数を文字列に変換するテンプレート、
str2idは文字列を識別子トークンとして扱わせる構文)
0861デフォルトの名無しさん
2006/11/12(日) 03:04:390862デフォルトの名無しさん
2006/11/12(日) 05:25:540863デフォルトの名無しさん
2006/11/12(日) 14:28:22そこまで来ると完全にメタプログラミングの領分かねぇ。
そいやIDEでIntelliSenceとかの為に完全に構文解析しようと思ったら、
static ifとかまでその場で実行する必要があるのね。
1.0に併せてツールが出そろってくると、
ツール開発者からも新しい視点のフィードバックが来るようになりそうだが。
ああ、Walterの戦いはこれからだ!
0864デフォルトの名無しさん
2006/11/12(日) 14:30:350865デフォルトの名無しさん
2006/11/12(日) 21:46:03WalterもDを裏切ってはいけない。
0866デフォルトの名無しさん
2006/11/12(日) 22:02:570867デフォルトの名無しさん
2006/11/12(日) 22:10:19どうするコマンド
0868デフォルトの名無しさん
2006/11/12(日) 23:02:070869デフォルトの名無しさん
2006/11/12(日) 23:03:400870デフォルトの名無しさん
2006/11/12(日) 23:28:510871デフォルトの名無しさん
2006/11/12(日) 23:39:280872デフォルトの名無しさん
2006/11/14(火) 00:42:550873デフォルトの名無しさん
2006/11/14(火) 09:12:140874デフォルトの名無しさん
2006/11/14(火) 12:12:51ttp://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D.announce&artnum=5386
0875デフォルトの名無しさん
2006/11/15(水) 06:33:53サンクス。
メンテか。随分時間がかかってるな。
0876デフォルトの名無しさん
2006/11/15(水) 11:31:400877デフォルトの名無しさん
2006/11/15(水) 12:59:47( ゚∀゚)彡 Tuple!Tuple!
⊂彡
ここまで来ると多重代入っつーかboost::tieつーかそういうのも欲しいな。
0878デフォルトの名無しさん
2006/11/15(水) 13:26:340879デフォルトの名無しさん
2006/11/15(水) 13:53:51Nov 14, 2006
New/Changed Features
* Implemented std.typetuple.
* Implemented std.traits.
* Added .funcptr property for delegates.
* Added .tupleof property for structs and classes.
* Slicing and indexing of type tuples now supported.
* Variable declarations can now be declared with type tuples.
* Improved the statement grammar thanks to Stewart Gordon.
* Added DMD switch -v1 for D language 1.0 compatibility.
* deprecated === and !== no longer allowed
* deprecated iftype no longer allowed
* deprecated on_scope_xxxx no longer allowed
* deprecated 'l' numeric literal suffix no longer allowed
* deprecated if (v; e) no longer allowed
* deprecated instance no longer allowed
* scope can now be used for RAII declarations; use auto for type inference.
0880デフォルトの名無しさん
2006/11/15(水) 16:02:49int main()
{
uint id;
Thread t;
t = Thread.getThis();
id = t.id;
return 0;
}
このソースコードなんだけど
ver1.54ではコンパイルできるが、ver1.55以降は
class std.thread.Thread member id is not accessible
と表示されてコンパイルできない。
1.55でthread関係が結構変わったみたいなことが更新履歴にあるんだけど。
これはバグなのかな?
単にidを使いたいだけなんだが
0881デフォルトの名無しさん
2006/11/15(水) 16:31:110882デフォルトの名無しさん
2006/11/15(水) 16:31:57ktkr! 今回かなりデカイな。tupleにクラスを入れられるから再帰テンプレートで簡単にswitchが作れそう。
>>880
hdlじゃダメなん?
0883デフォルトの名無しさん
2006/11/15(水) 16:33:48更新されてない件について。
0884デフォルトの名無しさん
2006/11/15(水) 17:06:02>>883
http://www.digitalmars.com/d/changelog.html#new0174
> What's New for D 0.174
> Nov 14, 2006
http://www.kmonos.net/alang/d/changelog.html#new0174
> D 0.174 での変更点
> Nov 9, 2006
あれ?よくわからんことになってる気がする。
0885デフォルトの名無しさん
2006/11/15(水) 17:24:11いい感じだ。
0886デフォルトの名無しさん
2006/11/15(水) 17:29:450887デフォルトの名無しさん
2006/11/15(水) 17:37:17最近branchが切られてdmd v0.173までマージされたよ。
trunkはgcc4.1への対応作業中だと思いたい。
0888デフォルトの名無しさん
2006/11/15(水) 17:40:37* scope can now be used for RAII declarations; use auto for type inference.
なにげに、これがうれしかったりする。
0889デフォルトの名無しさん
2006/11/15(水) 18:18:26わかるw
これで型推論しつつRAIIの宣言もできるのかな?
auto auto a;ってできなかったよな、確か。
0890デフォルトの名無しさん
2006/11/15(水) 18:31:32template bind(alias func,int i){
ReturnType!(func) _bind(ParameterTypeTuple!(func)[i] val,TL...)(TL tl){
return func(tl[0..i],val,tl[i..$]);
}
template bind(ParameterTypeTuple!(func)[i] val,TL...){
alias _bind!(val,TypeTuple!(TL[0..i],TL[i..$])) bind;
}
template bind(ParameterTypeTuple!(func)[i] val){
alias bind!(val,func,ParameterTypeTuple!(func)) bind;
}
}
char[] test(char[] a,char[] b,char[] c){
return "a:"~a~",b:"~b~",c:"~c;
}
void main(){
writefln(bind!(test,0).bind!("test")("test2","test3"));
//writefln(bind!(test,0)!("test")("test2","test3"));と書きたい…
}
エラーが起きないtupleの連結方法あるかなぁ…?
#templateにprivateやfriendが欲しくなってきた(w
0891デフォルトの名無しさん
2006/11/15(水) 18:32:44>TypeTuple!(TL[0..i],TL[i..$])
ここでtuple TL is used as a typeって言われる。
0892デフォルトの名無しさん
2006/11/15(水) 18:50:380893890
2006/11/15(水) 19:07:23template RemoveAt(int i,T,UL...){
static if(i==0)
alias UL RemoveAt;
else
alias TypeTuple!(T,RemoveAt!(i-1,UL)) RemoveAt;
}
static assert(is(RemoveAt!(1,int,bool,short)==TypeTuple!(int,short)));
0894デフォルトの名無しさん
2006/11/15(水) 19:24:38非推奨の機能って他に何か残ってたっけか
個人的には配列の後置配列宣言を廃止して欲しいな
0895デフォルトの名無しさん
2006/11/15(水) 19:59:29現状ではまだ無理なんかな。
・返り値型をタプルとして宣言するが、返し方がわからない。
alias TypeTuple!(int,char[]) A;
A f(int n, char[] s){
A a;
a[0]=100, a[1]="hoge";
return a;
}
> Error: cannot implicitly convert expression (tuple((_a_field_0),(_
> a_field_1))) of type (int, char[]) to (int, char[])
・ポインタを宣言してみるが初期化のしようがない。
import std.typetuple, std.stdio;
alias TypeTuple!(int,char[]) A;
void main(){
A* pa;
writefln(*pa);
}
> Assertion failure: '0' on line 694 in file 'glue.c'
> abnormal program termination
0896デフォルトの名無しさん
2006/11/15(水) 21:22:18スレ住人の目が輝きだしたなw
0897デフォルトの名無しさん
2006/11/16(木) 00:23:25日本語訳はdmd.***.zipに入ってるhtmlをもとにしてるので、
digitalmarsのサイトに載ってるやつよりは微妙に古かったりする。
dmd.174.zipに入ってるchangelog.htmlだと
> What's New for D 0.174
> Nov 9, 2006
になってるのでそっちに合わさっちゃってるのです。
0898デフォルトの名無しさん
2006/11/16(木) 00:23:27しかしdsource.org、プロジェクトのステータスとか最終commit日とかで
並べ替えたいのは俺だけだろか。
文句言う訳じゃないが、
こんなプロジェクトが!-> Status: 1 - Planning. -> (´・ω・`)ショボーン
てなるのが多いんだよな……。
0899デフォルトの名無しさん
2006/11/16(木) 00:57:57漏れのとこからだと数倍高速化されててうはうはなんだがなあ
0900デフォルトの名無しさん
2006/11/16(木) 01:02:30おやすみ
0901899
2006/11/16(木) 01:05:44のフォーラムはかなり高速化されていたけど
http://www.dsource.org/projects/build/wiki
の辺はそうでもないですね
0902デフォルトの名無しさん
2006/11/16(木) 01:12:04構造体としても使えるとか?
0903デフォルトの名無しさん
2006/11/16(木) 07:41:450904デフォルトの名無しさん
2006/11/16(木) 23:42:35まあ飽くまで裏側を育てる機能だと割り切るべきで
コーディングスタンダードにはならんだろうけど。
0905899
2006/11/17(金) 01:55:49よりよいライブラリが出てくることに期待するのがいいと思われ
0906デフォルトの名無しさん
2006/11/22(水) 02:34:10誰か書いてると言ってたような
0907デフォルトの名無しさん
2006/11/22(水) 02:43:12ありますた
0908デフォルトの名無しさん
2006/11/22(水) 03:12:51ついでに使い心地のレビューキボンヌ
0909デフォルトの名無しさん
2006/11/22(水) 20:59:02C++だとMSXMLとXercesの使い分けで
痛い目を見てるから統一して欲しいんだよね
0910デフォルトの名無しさん
2006/11/23(木) 23:39:530911デフォルトの名無しさん
2006/11/24(金) 03:00:25x,yを持つPointクラスをどうやって比較しろと言うのですか!
0912デフォルトの名無しさん
2006/11/24(金) 03:18:450913デフォルトの名無しさん
2006/11/24(金) 04:23:19シーケンシャルサーチされたら敵わんて。
0914デフォルトの名無しさん
2006/11/24(金) 04:58:31√は要らんのでは
0915デフォルトの名無しさん
2006/11/24(金) 09:06:24それはopEqualで済むはずだから、なんでopCmpまで、ということだと思う。
912なんてやって(3,2)と(2,3)が同値と判定されても困るだろうし、
実際順序が定義できない(しづらい)ものだと困らんのかな。
0916デフォルトの名無しさん
2006/11/24(金) 09:36:080917デフォルトの名無しさん
2006/11/24(金) 12:31:59そーなのですよ。
実際x^2+y^2で比較なんてするとまさに3,2と2,3で同じ値を返してくるのです。
……ん? ホントは「opEqualsかopCmpのどっちかが実装されてればいい」であるべきなのか。
誰も使ってなくて今まで指摘されなかったのか?
0918デフォルトの名無しさん
2006/11/24(金) 12:36:32個人的には
union Point{
struct{
int x;
int y;
}
long key;
}
としてkeyをキーにすれば十分だと思うけど。
0919918
2006/11/24(金) 12:42:45class Point{
union{
struct{
int x;
int y;
}
long key;
}
int opCmp(Point p){
if(key < p.key)return -1;
if(key > p.key)return 1;
return 0;
}
}
0920デフォルトの名無しさん
2006/11/24(金) 13:13:300921デフォルトの名無しさん
2006/11/24(金) 16:42:19連想配列部分のソース見てもよく分からんかったよ。
(まあよく分からんというのは読んだうちに入らんかもしらんが)
定義が難しいというのは、順序の意味づけが難しいということであって、
適当でいいなら、keyなんてやらんでも
int opCmp(Object o){
Point point = Point(Foo)o;
if(!point){ return -1; }
if(x == point.x){ return y - point.y; }
return a - point.a;
}
でいいと思うよ。仕様書の例のパクリ(+バグ修正)だけど。
0922デフォルトの名無しさん
2006/11/24(金) 17:00:560923デフォルトの名無しさん
2006/11/24(金) 17:17:100924デフォルトの名無しさん
2006/11/24(金) 18:48:28最初からキーを二分木で管理しておいて、
rehashをすると、木が平衡になるようにすんのかな。
0925デフォルトの名無しさん
2006/11/25(土) 11:37:58ハッシュだと偏ったときに効率悪いから二分木の可能性な気がする
てか、そもそもopCompだけでハッシュ無理じゃね?
0926デフォルトの名無しさん
2006/11/25(土) 11:46:08まぁ、憶測で語らずsrc/phobos/internal/aaA.d見れってこった。
0927デフォルトの名無しさん
2006/11/25(土) 17:49:540928デフォルトの名無しさん
2006/11/25(土) 18:30:42更新されてない件について。
0929デフォルトの名無しさん
2006/11/25(土) 19:00:23バグ修正の数がすごい
0930デフォルトの名無しさん
2006/11/25(土) 19:26:500931デフォルトの名無しさん
2006/11/25(土) 20:52:590932デフォルトの名無しさん
2006/11/25(土) 20:54:45年明け1.0説は真実だったのか。
0933デフォルトの名無しさん
2006/11/26(日) 00:46:510934デフォルトの名無しさん
2006/11/26(日) 00:47:02え、アレって確定した話じゃなくて単なる仮説だったの?
0935デフォルトの名無しさん
2006/11/26(日) 00:53:170936デフォルトの名無しさん
2006/11/26(日) 00:54:27説も何も
ttp://www.digitalmars.com/d/future.html
0937デフォルトの名無しさん
2006/11/26(日) 01:54:340938デフォルトの名無しさん
2006/11/26(日) 11:42:59つ デバッガ
0939デフォルトの名無しさん
2006/11/26(日) 13:37:42Dは二度と使わないようにしよう。
0940デフォルトの名無しさん
2006/11/26(日) 16:54:360941デフォルトの名無しさん
2006/11/26(日) 22:41:31しぶしぶ windbg を使ってみた
Stopped at exception って表示されて進まない・゚・(ノД`)・゚・
あんまり情報見つからないんだよもん
0942941
2006/11/26(日) 22:43:260943デフォルトの名無しさん
2006/11/27(月) 08:31:390944デフォルトの名無しさん
2006/11/27(月) 22:59:560945デフォルトの名無しさん
2006/11/27(月) 23:03:52-Lでリンカにオプション渡せる。コンパイルオプションだけでは無理。
0946デフォルトの名無しさん
2006/11/28(火) 12:33:320947デフォルトの名無しさん
2006/12/03(日) 14:28:470948デフォルトの名無しさん
2006/12/03(日) 15:22:56しかし「P言語」ってなぁ。なんか奇怪な言語っぽくてヤダな。
やっぱ「D言語」のが響きもスマートでいいなぁ。
0949デフォルトの名無しさん
2006/12/03(日) 15:40:06P言語…Perl、Python、PHP
L言語…http://en.wikipedia.org/wiki/L_programming_language
0950デフォルトの名無しさん
2006/12/03(日) 15:58:04void main(){
f(0.3);
}
real f(real n){
writefln(n);
return bindAlias!(f)( f(4*n*(1-n)) )();
}
カオスを発生させるよ!(゚∀゚)
0951デフォルトの名無しさん
2006/12/03(日) 16:20:06細かいところにはちょっと気に入らない点もあるけど、
おおかたいい感じになってきたと思えるな。
0952デフォルトの名無しさん
2006/12/03(日) 16:21:36動作同じだけど、意味的にはこっちのほうが良くね?
return bindAlias!(f)(4*n*(1-n))();
0953デフォルトの名無しさん
2006/12/03(日) 18:00:03たしかにそうだね。bindで自殺したいわけだから。
0954デフォルトの名無しさん
2006/12/03(日) 23:17:51わかってるバグは今のうちに伝えといた方がいいんじゃないかとふと思った。
つーわけで、まとめてBugzillaに投げてこようと思うんで、
0.176でまだ直ってないバグを知ってるひとは教えてくれませんか。
俺はとりあえずD言語研究のBugTrackでもチェクしてくる。
0955デフォルトの名無しさん
2006/12/03(日) 23:33:13void f(T...)(T) {} // (T x) にすると通る
void main() { f(1); }
//Assertion failure: 'arg->ident' on line 716 in file 'func.c'
//
//abnormal program termination
0956デフォルトの名無しさん
2006/12/03(日) 23:39:56T*f(T...)(T x){return null;}
void main(){auto x=f(2,3,4);*x=*x;}
というかtuple系はまだまだ地雷の予感
0957デフォルトの名無しさん
2006/12/04(月) 00:11:07struct A { int a; }
void main() {
A x;
x = x.init; //この行をコメントアウトすると通る。
}
------
>dmd -run test10.d
test10.d(4): Error: cannot implicitly convert expression (0) of type int to A
test10.d(4): Error: cannot cast int to A
エラー行の位置からしておかしいと思うから、これが通らんのはバグかな。
0958デフォルトの名無しさん
2006/12/04(月) 00:12:12全部 "test10.d(3): Error: " と読み替えて。
0959デフォルトの名無しさん
2006/12/04(月) 00:18:50とうとうここまできたか
さらにコンテナ(vector, list)と各種アルゴリズムが
stdに含まれたらC++を置き換えられるくらいになるのかな
0960デフォルトの名無しさん
2006/12/04(月) 00:40:33void main(){ g!(([""]~[])[0]); }
Assertion failure: 'e1->type' on line 5933 in file 'expression.c'
abnormal program termination
こんなんもある。
テストしてた当時はエラーコードの特定ができなかったなあ。
0961954
2006/12/04(月) 02:33:10http://d.puremagic.com/issues/show_bug.cgi?id=537
と同じかな。Thx.
>>956 http://d.puremagic.com/issues/show_bug.cgi?id=639
>>957 http://d.puremagic.com/issues/show_bug.cgi?id=640
>>960 http://d.puremagic.com/issues/show_bug.cgi?id=641
投稿してきますた。tupleは確かに突けば色々でそうだね…
0962デフォルトの名無しさん
2006/12/04(月) 03:06:28ありがたいことです。
0963デフォルトの名無しさん
2006/12/04(月) 14:00:070964デフォルトの名無しさん
2006/12/04(月) 14:02:47>>809とかどーでっしゃろ……と言ってみる。
*.diを出力するとき、中にstatic this(){ _moduleCtor(); }を含めてくれればいいと思うけど。
あと、パッケージ違いの同じファイル名のを一緒にコンパイルすると、
objファイルがかたっぽ上書きされて消えるってのは既出?
出力するobjを融合でもするか、必ずディレクトリ付きでobj出力しないと、
パッケージの意味が無いのだが。
-opすればいいけど、build使ってるとなぜか-opをdmdに渡してくれない……。
0965デフォルトの名無しさん
2006/12/04(月) 22:08:09>>516-526で話題になっていたバグがまだ解決されていないようなのですが、
これに関しての報告は既にどなたかが報告済みでしょうか?
まだでしたら合わせて報告をお願いします。
0966954
2006/12/04(月) 23:04:27>>809は_moduleCtorは呼び方ちゃう気がする...。俺のとこだと
--- b.d ---
int bValue=123; static this() { printf("b initialized!\n"); }
--- a.d ---
import b; void main() { printf("%d\n", bValue); }
-----------
> dmd -c -H b.d
> lib -c b.lib b.obj
> dmd a.d b.lib
> a
b initialized!
123
-----------
.diと.libの構成でもうまく行ってるんだけど、具体的にうまく動かない例ってどんなの?
-opは-opつければいいのでレポートするとすればbudの方だと思うんだが、
なんか色々大変らしいんだよね:
http://www.dsource.org/forums/viewtopic.php?t=1906
3.03で、-od渡すと-opを消すのをやめたって書いてある:
http://www.dsource.org/forums/viewtopic.php?t=592&start=15
けど直ってないな。訊いてみるか。
# あ、とりあえず現状でも-odをあきらめればbuildも-opを通すはず。
0968954
2006/12/04(月) 23:09:06> dmd -c -H b.d
> lib -c b.lib b.obj
> del b.d b.obj
> dmd a.d b.lib
でもうまくいく。
0969デフォルトの名無しさん
2006/12/05(火) 19:11:34class A{
const int a;
this(){
a= 1;
}
this(int b) {//Error: constructor main.A.this missing initializer for const field a
this(); //ここでaが初期化されてほしいんだけど・・?
}
}
0970デフォルトの名無しさん
2006/12/05(火) 19:13:25多分バグ。
0971954
2006/12/06(水) 01:13:27>>643 http://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=c++.command-line&artnum=702
も勢いで投げてきた。
>>969
attribute.html のconstの例でokってなってるパターンだから、バグだね。
http://d.puremagic.com/issues/show_bug.cgi?id=512
で報告されてるので1.0までに直るといいなあ
>>516-526 って手元で現象再現できないんだけど、
具体的にリンクエラーになるコードどなたかわかります?
0972デフォルトの名無しさん
2006/12/06(水) 05:58:37>>516,519(あるいは521の4)についてなんですが、
//////// test.d ////////
module test;
public class TTemplateTest(T) {
this(T in_) {}
~this() {}
}
alias TTemplateTest!(char) TTTest_1; //これの情報がtest.objに格納されてほしい
//////// main.d ////////
import test;
int main(char[][] args) {
TTTest_1 aaa = new TTTest_1('a');
return 0;
}
> dmd test -c
> dmd main -c
> lib aaa.lib +test
> dmd main.obj aaa.lib
↑とすると、リンクエラーになります(test.d中で明示的に実体化されてるはずなのに、シンボルが見つからないと言われる)。
↓test.obj を aaa.lib に格納せず、直接 main.obj と結合するとエラーになりません。
> dmd main.obj test.obj
しかし、
> lib -l test.obj
↑でリストファイルを出力すると、test.objの中に実体化したテンプレートのシンボルそのものが存在していないことが分かります。
つまりlibファイルに格納するしないにかかわらず、コンパイルした時点で実体化したテンプレートの情報が消えてしまうようです。
殆ど書かれてることのまとめみたいになりましたが、一応うちの環境(Windows2000)では上のコードで問題が再現されます。
>>521の方の1,2,3については私には分かりません。すみませんが他の方お願いします。
0973デフォルトの名無しさん
2006/12/07(木) 00:02:35実行時に FreeLibrary(unZip32); で Access Violation がでる...
-O を指定しないと正常に動作するから、dmdの最適化のバグなの?
import std.stdio;
import std.c.windows.windows;
int main( char[][] args ) {
char[] output = new char[100];
alias int (*PUNZIP)(HWND hWnd, LPCSTR szCmdLine, LPSTR szOutput, DWORD dwSize);
HANDLE unZip32 = LoadLibraryA("UNZIP32.DLL");
PUNZIP UnZip = cast(PUNZIP)GetProcAddress(unZip32, "UnZip");
UnZip(null, "-x -a --i dmd.zip", output, output.length);
FreeLibrary(unZip32);
return 0;
}
0974デフォルトの名無しさん
2006/12/07(木) 01:30:20extern(Windows){
alias int (*PUNZIP)(HWND hWnd, LPCSTR szCmdLine, LPSTR szOutput, DWORD dwSize);
}
int main() {...
が正解
0975デフォルトの名無しさん
2006/12/07(木) 17:35:34Dってクラスとかインターフェイスにはアクセス保護属性って付けないもんなの?
下記コードのIのアクセス保護属性をいじると場合によってはリンクできないっぽそうなんだけど、
仕様それともバグ?
public class A {
//public interface I {//OK
//protected interface I {//OK
//interface I {//OK
//package interface I {//Error
private interface I {//Error
int func1();
}
private int test1(I i) {
return i.func1();
}
public this(){}
public void test(){
I i = new class() I{
int func1(){
return 1;
}
};
test1(i);
}
}
エラーはこんな感じ
main.obj(main)
Error 42: Symbol Undefined _D4main1A1I5func1FZi
0976デフォルトの名無しさん
2006/12/07(木) 17:43:30>>1
0977デフォルトの名無しさん
2006/12/07(木) 17:49:17バグ。これだけで起こる。
public class A {
private interface I {
int func1();
}
private int test1(I i) {
return i.func1();
}
}
0978デフォルトの名無しさん
2006/12/07(木) 17:50:190979デフォルトの名無しさん
2006/12/07(木) 18:05:49コンパイラ!=言語
>>977
classでも起きるな。
0980デフォルトの名無しさん
2006/12/07(木) 22:59:09void main(){I.init.f();}
とりあえず最小の再現コード
interface I{private void f();}でも再現
-> void f()がprivate扱い
-> fがvtblに積まれない
-> リンクのときにエラー
という流れな気が。
0981デフォルトの名無しさん
2006/12/07(木) 23:41:48ってのをやりたくて、
S[] map(T, S)(T[] array, S delegate(T) func) {
S[] newArray;
foreach (T item; array)
newArray ~= func(item);
return newArray;
}
としたんですが、delegateだけでなくfunctionも受け入れられるようにするにはどうしたらいいですか?
0982デフォルトの名無しさん
2006/12/07(木) 23:53:51private interface I{
protected void f();
}
ならたぶん通る。
Dのprivateは同じモジュール内からはアクセスできるはずだから、
仕様と食い違う動作ということでバグかなあ。
0983デフォルトの名無しさん
2006/12/08(金) 00:24:43S func で受けて ReturnType!(S)[] を使う
0984デフォルトの名無しさん
2006/12/08(金) 01:13:16983とは違う方法だけど、一応http://www.kmonos.net/alang/d/tuple.htmlの一番下も参照。
0985デフォルトの名無しさん
2006/12/08(金) 03:10:150986デフォルトの名無しさん
2006/12/08(金) 17:01:40なるほどなー。ありがとうございます。
これ、std.bindで作った関数はどうやって対処したらいいんですかね…。質問ばかりで申し訳ないです
0987964
2006/12/08(金) 17:34:57スイマセン。問題の原因を間違えたみたいです。
静的コンストラクタの順序が、.diと.libの構成だと守られてない予感。
--- lib.d ---
public int i = 1;
static this(){ i = 2; }
--- main.d ---
import lib, std.stdio;
void main(){ }
static this(){ writefln(lib.i); }
・.diと.libを経てビルドすると1
・"dmd main.d lib.d"とビルドすると2
と結果が変わります。
http://www.kmonos.net/alang/d/module.html の「静的コンストラクタの順序」の項に反してる感じ。
ちなみに、途中で生成されたlib.diに "static this(){ _moduleCtor(); } "なんてつけても2。
だから>>809みたいなセリフが出てきたようです。
.obj上書きの方は、コンパイラが何も言ってくれないんでちょっと怖いと思いまして。
「名前が被ってます。-op付きでコンパイルしる」とかせめてdmdから警告が欲しいと思った次第でふ。
そんな解決策でいいのかは別として。
buildのほうはやっぱ多少話に出てたんですね……情報感謝です。
0989デフォルトの名無しさん
2006/12/08(金) 23:43:010990デフォルトの名無しさん
2006/12/08(金) 23:47:42もうJPAに取って代わられる死にインタフェースなのかな
0991デフォルトの名無しさん
2006/12/08(金) 23:49:25むしろforkさせれば?
0992デフォルトの名無しさん
2006/12/08(金) 23:50:221からDで書こうと思う。という事でまずはアセンブラから…
0993デフォルトの名無しさん
2006/12/08(金) 23:53:24dmdフロントエンドのD言語版ならもうあるよ。バックエンド作るってんだったらガンガレ。
http://svn.dsource.org/projects/dparser/trunk/dparser/
0994デフォルトの名無しさん
2006/12/08(金) 23:58:45勿論バックエンドから。
0995デフォルトの名無しさん
2006/12/09(土) 02:20:18おれはたてないがな!
0996デフォルトの名無しさん
2006/12/09(土) 08:29:30関数オブジェクトを受けれるような ReturnType を定義する
template Return(R) {
static if (is(typeof(R.opCall) RR == return))
alias RR Return;
else
alias ReturnType!(R) Return;
}
0997デフォルトの名無しさん
2006/12/09(土) 08:47:00次スレ
http://pc8.2ch.net/test/read.cgi/tech/1165621441/
0998デフォルトの名無しさん
2006/12/09(土) 10:33:31_| ̄□__
|_ _|へ ̄\
| |_ ゝ__)__) | ̄ ̄ ̄ ̄ヽ ̄ヽ
/ .\(,,゚Д゚)  ̄ ̄ ヽ ,|(,,゚Д゚)
( o | ̄丶.(ノ| .|) _.ノ (ノノ ノ)
.ヽ_ノ_ノ_ノ__ノ |__ノ__ノ
し`J し`J
0999デフォルトの名無しさん
2006/12/09(土) 11:50:051000デフォルトの名無しさん
2006/12/09(土) 11:52:1910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。