D言語 Part9

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

■本家
http://www.digitalmars.com/d/
http://www.kmonos.net/alang/d/ (和訳)

■コンパイラ
http://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
http://home.earthlink.net/~dvdfrdmn/d/ (GDC, gccフロントエンド)
http://gdcmac.sourceforge.net/ (GDCのmac用バイナリ)

■参考URL
http://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
http://dsource.org/ (dsource)
2デフォルトの名無しさん:2006/05/03(水) 20:38:38
3デフォルトの名無しさん:2006/05/03(水) 20:39:36
【char[] str】
【str ~= "nullpo"】
4デフォルトの名無しさん:2006/05/03(水) 21:14:05
>>1
5デフォルトの名無しさん:2006/05/03(水) 21:17:18
6デフォルトの名無しさん:2006/05/04(木) 19:20:43
>>1乙でし
7デフォルトの名無しさん:2006/05/05(金) 03:54:19
これいつになったら実用化されるの?
8sage:2006/05/05(金) 08:27:24
これが伸びると仮定してもまだ数年はかかるんじゃね?
普及へのロードマップが全然想像できないが
9デフォルトの名無しさん:2006/05/05(金) 08:28:47
間違えた
10デフォルトの名無しさん:2006/05/05(金) 10:11:34
もう少しバイナリが小さくなってくれたら実用化はすぐだと思うんだがなぁ。
まずPG言語やバイナリに関心のある分野を抑えないと。
11デフォルトの名無しさん:2006/05/05(金) 12:15:53
1210:2006/05/05(金) 13:01:18
コンパイラを実装できるようなスキルがないです。
使うのは多少できるが、、
13デフォルトの名無しさん:2006/05/05(金) 13:03:09
D言語をどうこう言う前に、お前の実用化を目指そうね。
1410:2006/05/05(金) 13:18:56
別分野で実用されているので満足しておきます。
15デフォルトの名無しさん:2006/05/05(金) 13:23:51
足を引っ張ってるのを実用されているとはいいません
16デフォルトの名無しさん:2006/05/05(金) 15:37:32
まぁ自分の心配を先にしなさいな。
17デフォルトの名無しさん:2006/05/05(金) 15:50:00
お前がな
18デフォルトの名無しさん:2006/05/05(金) 15:58:49
すみませんでした。そうします。
19デフォルトの名無しさん:2006/05/05(金) 16:18:09
うむ、分かればよろしい。
20デフォルトの名無しさん:2006/05/06(土) 05:11:30
phobos\internal\dmain2.d のWinMain版って作れないのかな?
各モジュールが独自にスコープを持つ仕様のせいか思うように逝かない。
21デフォルトの名無しさん:2006/05/06(土) 06:35:25
22デフォルトの名無しさん:2006/05/06(土) 06:40:32
v0.155のphobosで、std.Thread.idが突然プライベートメンバになってるな。
前verまで、パブリックだったので、スレッドの識別(連想配列のキーなど)に使っていたのだが、
代わりがないようなので、std.Thread継承して、同じようなメンバ作るしかないのかな?
23デフォルトの名無しさん:2006/05/06(土) 06:47:49
>>21
それ。
毎回同じコードだから独立させたかった。
24デフォルトの名無しさん:2006/05/06(土) 07:15:27
WinMain内から呼び出す関数名をmain()にして

link.exe WinMainのobj+mainのobj,,,,定義ファイル/co/noi;

で何とか逝けた…
もっと楽な手段がありそうだが今はこれで我慢しよう。
25デフォルトの名無しさん:2006/05/06(土) 22:10:20
興味本位で聞くんだけど、WinMain って何に使うん?
-L/su:windows 付ければ、 main でもコンソール出なくなるんだけど
26デフォルトの名無しさん:2006/05/06(土) 23:05:51
lpszCmdlineは後からAPIでとれるけど、
nCmdShowはとれたっけ。
27デフォルトの名無しさん:2006/05/07(日) 01:12:54
確か取れたような
28デフォルトの名無しさん:2006/05/07(日) 03:28:22
>>25
実現したかったことは
・毎度おなじみの>>21のWinMainのコードをdmain2.dみたく分離してもう弄る事のないように。
・WinMainから呼ばさせる関数は(main関数みたく)どのモジュールに書いても呼び出される。
で、結果的に必要だった。

mainでもコンソール出なくなるのは
「何故WinMain()が呼ばれねー → 別モジュールにあるmain()が呼ばれてるから」
って馬鹿な過去の経験により知ってる。

3-4行目のことをを実現するに至った方法が
「"WinMainからmainを呼ばせて"別モジュールにmainの実体を記述」
なんだがな。

extern(C)のmainの如く>>21のコードとはもう無縁だし(もちろんリンクは必要だが)
>>24みたくリンカを直接弄くらなくてもOKなことも分かったし
mainから記述できる上に例外はちゃんとWinMainが拾ってくれて
MessageBoxを出してくれることも確認できた。
29デフォルトの名無しさん:2006/05/07(日) 09:18:21
向こうで新しいロゴの話で盛り上がってるようなので作ってみた。
我ながらセンス無さ過ぎですが。
http://dream.my-sv.net/upload/vipprg/src/up0001.png
30デフォルトの名無しさん:2006/05/07(日) 09:28:46
31デフォルトの名無しさん:2006/05/07(日) 11:01:22
>>30
なんか色合いが、JavaというかSunっぽくね?
32デフォルトの名無しさん:2006/05/07(日) 11:38:55
>>30
なんか・・Dが3つもある意味が無いような
33デフォルトの名無しさん:2006/05/07(日) 11:56:00
>>30
なんでダイワハウスなんだ?
34デフォルトの名無しさん:2006/05/07(日) 13:48:24
ロゴは鮭の顔でいいんじゃない?
35デフォルトの名無しさん:2006/05/07(日) 18:20:14
swtのサンプルをdwtに移植しようと思ったんだが、
無名クラスから周囲の関数がどうもうまく扱えない。
これって正常な動作なんだろうか?
class HogeAdapter {
  void foo() { printf("hoge"); }
}
class Hoge {
  private HogeAdapter _hogeAdapter;
  void addHogeAdapter(HogeAdapter hoge) { this._hogeAdapter = hoge; }
  void foo() { if (_hogeAdapter) _hogeAdapter.foo(); }
}
class Nanika {
  void hige() { printf("hige"); } // 扱いたい関数
/*
  class HigeAdapter : HogeAdapter { void foo() { hige(); } }
  void foo() {
    auto hoge = new Hoge;
    hoge.addHogeAdapter(new HigeAdapter);
    hoge.foo();
  }  //↑のように書けば問題無し。
*/
  void foo() {
    auto hoge = new Hoge;
    void hige() { this.hige(); } // @
    hoge.addHogeAdapter(new class() HogeAdapter { void foo() { hige(); } });
    hoge.foo();
  }
}
void main() { auto nanika = new Nanika; nanika.foo(); }

@の行があればコンパイルは通る。(これは書かないで済んで欲しい)
ただし、実行するとAccess Violationになる。
36デフォルトの名無しさん:2006/05/07(日) 18:50:24
ttp://www.kmonos.net/alang/d/class.html
> 非staticネストクラスは、隠しメンバ(コンテクスト・ポインタと呼びます)を
> 一つ加えることで実現されています。 """関数内にあるときは周囲の関数のフレームポインタ"""が、
> クラス内にあるときは周囲のクラスの this ポインタが、隠しメンバに格納されています。
となっているので、今のところ仕様かなあ。
確かにクラスのメンバ関数内にあるときは両方にアクセスできて欲しいかも。
37デフォルトの名無しさん:2006/05/07(日) 19:41:38
>>36
>関数のフレームポインタ
サンクス。なんとなく分かったような気になった。
以下のような場合うまく動作するが、
これは最外周の関数がポインタとなってると考えればいいのかな?
無知でスマソ。
class HogeAdapter { void foo() { printf("hoge"); } }
class Hoge {
  private HogeAdapter _hogeAdapter;
  void addHogeAdapter(HogeAdapter hoge) { this._hogeAdapter = hoge; }
  void foo() { if (_hogeAdapter) _hogeAdapter.foo(); }
}
void main() {
  void hige() { printf("hige"); }
  void foo() {
    auto hoge = new Hoge;
    hoge.addHogeAdapter(new class() HogeAdapter { void foo() { hige(); } });
    hoge.foo();
  }
  foo();
}
38デフォルトの名無しさん:2006/05/07(日) 20:27:24
>>37
扱いたいメソッドをstaticメンバにするのはどうよ?
39デフォルトの名無しさん:2006/05/07(日) 21:05:24
>>38
メソッドから呼び出すメソッドにも全てstaticを
付けなくてはならなくなってもう大変。
40デフォルトの名無しさん:2006/05/07(日) 21:07:54
個人的にはコンストラクタでaddAdapterを呼ぶのが好みですが

auto hoge = new Hoge(this, &hige);
auto hoge = new Hoge(this, delegate void() { printf("hige"); });

Hoge.this(Control owner, void delegate() a)
{

}
41デフォルトの名無しさん:2006/05/07(日) 21:09:58


Hoge.this(Control owner, void delegate() a)
{
this.foo = a;
owner.addAdapter(this);
}
42デフォルトの名無しさん:2006/05/07(日) 21:30:52
もしくはControlクラスにdelegateを直接ハンドルできるメソッドがあるのでそれを使う手もある
void handleMouseDown(Object customData, void delegate(MouseEvent) func)
43デフォルトの名無しさん:2006/05/10(水) 01:19:05
もうインテリセンスなしではやっていけません
なんかないの?
44デフォルトの名無しさん:2006/05/10(水) 01:24:58
作れ
45デフォルトの名無しさん:2006/05/10(水) 01:51:46
インテリセンスはほんとMSの罠だよな。
あれなしじゃ生きていけないよ
46デフォルトの名無しさん:2006/05/10(水) 03:35:52
MSじゃなくても罠ですよ。
もうアレがないと、まともに組めない。
47デフォルトの名無しさん:2006/05/10(水) 07:10:42
ほんと麻薬みたいなもんだよな・・・
.ncb再構築のために、VS起動しなおしたりするようになったし・・・
48デフォルトの名無しさん:2006/05/10(水) 08:39:51
作れって言われてもなー
eclipseプラグインででも作ってみるか
49デフォルトの名無しさん:2006/05/10(水) 16:49:25
Dでインテリセンス欲しい

どうせなのでDでパーサーを作ろう

作り始める

インテリセンスない

めんどい

作る気なくなる  ←今ここ
50デフォルトの名無しさん:2006/05/10(水) 17:41:58
パーサあんの?
じゃあくれ
51デフォルトの名無しさん:2006/05/10(水) 23:56:39
よく読め
52デフォルトの名無しさん:2006/05/11(木) 08:57:59
DMD 0.157
53デフォルトの名無しさん:2006/05/12(金) 00:32:20
んじゃ共同開発と行きましょうか。
Eclipse用ってことは言語はJavaでいいんじゃないかな?
まずは要件定義から。
54デフォルトの名無しさん:2006/05/12(金) 00:36:11
"蜻蛉切り"という、いまや見るも無残なプロジェクトがあってな……

と、>49を見て思った。
55デフォルトの名無しさん:2006/05/12(金) 01:12:08
中途半端なのってみっともないよな
56デフォルトの名無しさん:2006/05/12(金) 09:11:29
かといってやり始めなければ何も変わらない
57デフォルトの名無しさん:2006/05/12(金) 09:13:53
共同開発か・・
参加してみたいがついていけるか不安
58デフォルトの名無しさん:2006/05/12(金) 09:24:53
共同開発したいんなら、だれかが主導してWikiなりなんなり立ち上げるべきだろう
ここはあくまでもD言語について語るスレ、せめて別のスレ立てれ、そして俺も助力する
59デフォルトの名無しさん:2006/05/13(土) 12:58:09
D言語はコンパイルが早いといわれてるわけだし
構造解析も意外と速いんじゃなかろうか?
テンプレートやmixinみたいな機能に対応するのは難しいかも知れんけど
解析さえしてしまえばあとは楽だと思う
60デフォルトの名無しさん:2006/05/13(土) 12:59:44
DがC++に対して優位である証明として、次の比較があるけれど:

D vs その他の言語
http://www.kmonos.net/alang/d/comparison.html

C++のように、ライブラリでの実装を推奨したとすれば、上記の比較表はかなり違ったものになる。
この比較は、標準ライブラリでの実装を否定し、言語仕様に組み込むことを善とする考えに基づいている。
その理由として:

言語の機能 vs ライブラリによる実装
http://www.kmonos.net/alang/d/builtin.html

を挙げている。漏れには、これらの「利点」が、ライブラリでの実装を否定するほどのものではないように見える。
その他のDの機能も、C++でできることを、Dは少し簡易にできるというだけにしか見えない。

結論:C++で必要十分。
61デフォルトの名無しさん:2006/05/13(土) 13:25:10
Haskell最強だろ
62デフォルトの名無しさん:2006/05/13(土) 13:32:39
「必要十分=最良」ではない件
63デフォルトの名無しさん:2006/05/13(土) 13:39:51
使い勝手より記法の簡便さより何より、組み込みの方がコンパイルスピートが速いし効率良いコードも吐ける。
それでいいんじゃないか。
64デフォルトの名無しさん:2006/05/15(月) 00:42:32
C++の文法って読みにくいんだよね。
65デフォルトの名無しさん:2006/05/15(月) 00:45:50
>>64
C++の実装とインターフェースを分けて書くところが嫌い。
あれ以外は全部好きなんだけどね。
逆にDはそれが一つで済むところだけのためにすきなのだけど(w

66デフォルトの名無しさん:2006/05/16(火) 00:01:16
>>65
::が一番嫌い。
67デフォルトの名無しさん:2006/05/16(火) 00:28:58
>>66
同志
68デフォルトの名無しさん:2006/05/16(火) 00:54:22
>>66
.でいいジャンとか思う
69デフォルトの名無しさん:2006/05/16(火) 03:49:55
>>65
分けて書くのは構わないんだが
結局インタフェースに実装を書いてしまうところがイヤ
70デフォルトの名無しさん:2006/05/16(火) 05:16:18
>>66-68
インスタンスメソッドとクラスメソッドの違いを解釈するために
コンパイラが手抜きしているとも言う
71デフォルトの名無しさん:2006/05/16(火) 08:15:49
結局D言語のIDEが何があって何が使いやすいの?
72デフォルトの名無しさん:2006/05/16(火) 14:42:00
数ヶ月前の知識

akide:こないだ開発やめたんだっけか?
elephant:どうなったか知らん
Eclipce:未だにハイライトだけ?
蜻蛉切り:(´・ω・`)

まだなんかあったっけ
とにかく使いやすいのはないと思われ
73デフォルトの名無しさん:2006/05/16(火) 14:51:55
poseidonは
7472:2006/05/16(火) 14:59:40
そういえば名前変わってたんだったっけ.

akide
DIDE->elephant->poseidon
Eclipce
蜻蛉切り

もうない?
75デフォルトの名無しさん:2006/05/16(火) 18:02:01
うちは、アイコンにttp://oksoftware.blog52.fc2.com/blog-entry-87.html使って
エディタはTeraPadにCオプション渡してる。

"C:\Program Files\TeraPad\TeraPad.exe" /cpp "%1"
↑こんなかんじにフォルダオプションから。
76デフォルトの名無しさん:2006/05/16(火) 18:27:31
とりあえず更新ありそうなposeidonに注目しつつ>>75みたいに好きなエディタ使うのが吉かな。
poseidonは現時点でもまあ使えない事はない。
77デフォルトの名無しさん:2006/05/19(金) 10:17:01
IDE厨うぜぇ
78デフォルトの名無しさん:2006/05/19(金) 18:56:57
とりあえずposeidonのインテリセンスが適当過ぎるのを何とかして欲しいわな
オプソなのに誰もパッチ作ってない所に皆のやる気の無さを感じる。
79デフォルトの名無しさん:2006/05/19(金) 21:13:56
やっぱVisual Studio並みの完成度がほしいんです
80デフォルトの名無しさん:2006/05/19(金) 22:34:27
poseidon 使ってみたよ
キーワードしか補完してくれないようじゃ使えないなあ
81デフォルトの名無しさん:2006/05/19(金) 22:37:58
つまり現段階ではどれも使えないと・・
そこで>>53とかの話になるわけだがどうなったんだ
82デフォルトの名無しさん:2006/05/19(金) 23:00:49
boost::spiritで遊んでみてるんだがコンパイル激重 orz
でも面白いねこれ
83デフォルトの名無しさん:2006/05/19(金) 23:02:39
ス レ 違 う ぞ
8482:2006/05/19(金) 23:03:34
Dパーサ作って遊んでるだけど
85デフォルトの名無しさん:2006/05/19(金) 23:06:27
86デフォルトの名無しさん:2006/05/19(金) 23:15:36
あるんだね
じゃあこっちいじってみたほうがよさそうだなあ
サンプルがよくわからんが…
87デフォルトの名無しさん:2006/05/20(土) 08:07:24
BCC Developerレベルのものすらないんだろうか?
88デフォルトの名無しさん:2006/05/20(土) 10:44:18
なんならボクが作ってアゲてもいいですよ?
89デフォルトの名無しさん:2006/05/20(土) 10:56:55
>>88
救世主キタ━━━━━━(゚∀゚)━━━━━━ !!
90デフォルトの名無しさん:2006/05/20(土) 11:28:39
作るならやっぱりDで作ってソース公開でお願い
91デフォルトの名無しさん:2006/05/20(土) 11:34:45
Framework の方が先じゃない?
92デフォルトの名無しさん:2006/05/20(土) 12:21:00
いやそれを作るのもインテリセンスないと面倒なんだよねw
93デフォルトの名無しさん:2006/05/20(土) 12:39:15
おまいらブートストラップっつー言葉を忘れていまいか?
94デフォルトの名無しさん:2006/05/20(土) 12:42:10
Dのパーサ、Dでつくるなら、Dのソースがあるんじゃね?
9594:2006/05/20(土) 12:43:39
ごめwww勘違いwwww
96デフォルトの名無しさん:2006/05/20(土) 14:02:31
DでCのCALLBACKに対応する物はないの?
97デフォルトの名無しさん:2006/05/20(土) 14:56:27
>92
んじゃまず
C++とかなにかでD言語用IDEを作り
そうしてできたD言語用IDEでD言語用IDEを作れば解決
98デフォルトの名無しさん:2006/05/20(土) 15:00:03
>>88
うp
99デフォルトの名無しさん:2006/05/20(土) 15:05:37
>>96
( ´,_ゝ`)プッ
100デフォルトの名無しさん:2006/05/20(土) 16:21:12
VC++みたいな自動補完するにはパーサの他に何が必要?
宣言別に連想配列にキーワードぶち込むだけでOKかな?
101デフォルトの名無しさん:2006/05/20(土) 17:53:52
パーサの条件
・普通にツリー構造を解析できる
・テンプレート、mixinを解析できる
・externブロック内など言語に直接関係しない部分は解析対象外(そうしないと難しすぎるし)

コード補完の条件
・Ctrl+Space(任意)でツリーの特定部分を絞り込む
・ピリオドで下位ツリーの一覧を表示する
・左辺への代入、引数の指定などの場合は型優先表示される オプション
・大文字小文字を無視する(確定後補完する) オプション

EclipseみたいなIDEのインテリセンスに肩を並べるにはここまでいかなね。
ぶっちゃけEclipseプラグインでいいと思うから、インテリセンスはJavaで作ればいいよ。
あと省略文字登録も可能にするとより完璧。(psfi → private static final intと補完)
102デフォルトの名無しさん:2006/05/20(土) 18:14:22
とりあえず、入力内容から既知のキーワードの一覧を探索する、だけでも。
って、インクリメンタルサーチの普通の実装だけど。
103デフォルトの名無しさん:2006/05/20(土) 18:25:20
>>102
それはちゃんとしたエディタなら、できるからねえ。
それを超えるのがIDE
104デフォルトの名無しさん:2006/05/20(土) 18:34:44
D用のフレームワークってどんなのがあるんでしょうか?
105デフォルトの名無しさん:2006/05/20(土) 18:38:36
まだD自身のフレームがふにゃふにゃしてるからなぁ。

106デフォルトの名無しさん:2006/05/20(土) 23:50:22
最適化付きコンパイル周りにもバグは多い
107デフォルトの名無しさん:2006/05/20(土) 23:52:16
字句解析、構文解析を作る場合は、D言語仕様のイタリック表記の部分を見ればいいの?
108デフォルトの名無しさん:2006/05/22(月) 09:07:34
D用のフレームワークってどんなのがあるんでしょうか?
109デフォルトの名無しさん:2006/05/22(月) 12:48:38
Delphi for the Microsoft .NET Framework
110デフォルトの名無しさん:2006/05/22(月) 13:35:02
何でも自作
それがDクオリティ
111デフォルトの名無しさん:2006/05/22(月) 18:31:38
112デフォルトの名無しさん:2006/05/22(月) 18:44:20
>>111
ソースがない ただの屍の様だ
113デフォルトの名無しさん:2006/05/22(月) 18:50:47
>>112
dmcの一部を使ってるからソース出せないとか何とか
114デフォルトの名無しさん:2006/05/22(月) 23:18:38
作者はdmdが成熟したら本気で売り物になるとか思ってるのか?
115デフォルトの名無しさん:2006/05/22(月) 23:28:48
ターゲットがいまいちわからん。
サーバーサイドでもないし、クライアントアプリにも見えんし。
116デフォルトの名無しさん:2006/05/23(火) 00:15:02
デーモン市場だと思うよ
そんな市場あるの?って疑問はあえて持たないでくれ
117デフォルトの名無しさん:2006/05/23(火) 01:04:55
デーモン市場って何?
unixのデーモンのことか?
118デフォルトの名無しさん:2006/05/23(火) 01:46:15
日本の国技である相撲が大好きな閣下のことだろ
119デフォルトの名無しさん:2006/05/23(火) 02:02:42
C/C++をついに嫌になった人が代替品として使う言語だと思ってた
だから個人ユースしか見えない・・・
120デフォルトの名無しさん:2006/05/23(火) 19:31:32
いやいや定刻で刻めるシステムとかにはうってつけだろ
メモリリーク心配しなくていいから
当然ゲームなんかも向いてる
121デフォルトの名無しさん:2006/05/23(火) 19:57:22
まあ、Dのまともな完成品あるのもゲームくらいだもんな。
122デフォルトの名無しさん:2006/05/23(火) 20:13:27
X11のD用ポーティングってない?
123デフォルトの名無しさん:2006/05/23(火) 21:09:59
>ゲーム
ガベコレの動作が不安ではある
124デフォルトの名無しさん:2006/05/23(火) 21:25:19
CPUが200MHzの時代なら、16.6秒の世界にガベコレも怖かったろうけど
2GHzの時代ならぜんぜん勇気を持って踏み込めると思う
11ミリ秒くらいはゲームに使えるんじゃない?
125デフォルトの名無しさん:2006/05/23(火) 22:51:28
ガベコレが怖いなら、最初だけガバッとメモリを確保して
後は一切 new しないプログラムを書けばいいだろう。
126デフォルトの名無しさん:2006/05/23(火) 23:00:38
Dの意味が…
127デフォルトの名無しさん:2006/05/23(火) 23:08:32
>>123
クラス指向な言語なんだから一つながりのシーンに割り当てるに十分なメモリがあればそれほどGCも問題にならないよ。
128デフォルトの名無しさん:2006/05/23(火) 23:28:39
>>125
積み木ファイターがそれだっけ。

>>126
そうおもったw
129デフォルトの名無しさん:2006/05/24(水) 00:07:11
>>126
ガベコレがおきると困る期間(1プレイ分とか)の分だけ
がばっと確保して、その期間が過ぎたら解放して、
新しい期間が始まるときにまたがばっと確保して、
という方針でやるときには、確保と解放が何度も
起こるから、一応Dの意味はあると思う。

ガベコレを一定期間無効にするのはなんか問題が
あったんだっけ?
130デフォルトの名無しさん:2006/05/24(水) 00:47:43
GCってもっと穏やかにできないのか?
何も一度に全て処理する必要ないように思う。
131デフォルトの名無しさん:2006/05/24(水) 01:46:31
http://f.hatena.ne.jp/ultraist/20060507082544
http://d.hatena.ne.jp/ultraist/
これ、DとDWTみたいなんだけど、ガイシュツかね?
132デフォルトの名無しさん:2006/05/24(水) 01:54:51
>>131
DWTのやつはまだ出ていないでしょ。
今あるやつはDFL。

ちょーどガベコレの話が出ているが
>>131はガベコレがまともに動かないらしくdeleteで解決してる。
スレッドが関係しているのか。
133デフォルトの名無しさん:2006/05/24(水) 01:55:07
>>125
まあ、メモリプールはよく使われるね。
↓こんな風にすれば、プールしながら、newもつかえる
http://d.hatena.ne.jp/h_sakurai/20060417
でもマンドクセ('A`)
134デフォルトの名無しさん:2006/05/24(水) 02:17:52
>>131
なんか、そこみてるとGCが特定の条件下で、駄目駄目っぽいんだけど、
誰か現象をまとめてくださいよ。
135デフォルトの名無しさん:2006/05/24(水) 02:25:20
DFLってのはこれか
http://www.dprogramming.com/dfl.php

GUIのデザイナーもあってよさそうに見えるが
http://www.dprogramming.com/entice.php
136デフォルトの名無しさん:2006/05/24(水) 02:36:36
>>133
宣伝すな
137デフォルトの名無しさん:2006/05/24(水) 02:43:57
>>135
マルチバイト文字の対応が微妙で
Windows2000で動かないらしい。
それでDWTだとか。
XPでも、tabcontrol.dがダメらしく、自分で変更しろ書いてある。
138デフォルトの名無しさん:2006/05/24(水) 02:57:12
>>136
他人のページ宣伝してもおもろないんだが('A`)

>>137
なるほど。ちょっとつらいね
139デフォルトの名無しさん:2006/05/24(水) 08:33:15
>>138
はいはい

宣伝すな
140デフォルトの名無しさん:2006/05/24(水) 17:19:30
http://d.hatena.ne.jp/ultraist/20060225/p4
http://d.hatena.ne.jp/ultraist/20060109/p3
宣伝すないわれるが、これは気になる。
マジですか。
141デフォルトの名無しさん:2006/05/25(木) 00:22:18
宣伝するなっつってんじゃん。馬鹿?
142デフォルトの名無しさん:2006/05/25(木) 00:33:12
そこは俺のサイトなんで、勘弁してやってくれ
143デフォルトの名無しさん:2006/05/25(木) 00:42:11
糞サイトを張ったら晒し
無関係のサイトを張ったら荒らし
それ以外のサイトを張ったら宣伝
144デフォルトの名無しさん:2006/05/25(木) 04:22:39
NGワード:宣伝
145デフォルトの名無しさん:2006/05/25(木) 07:10:25
146デフォルトの名無しさん:2006/05/26(金) 08:44:18
D 0.158
147デフォルトの名無しさん:2006/05/26(金) 19:01:45
関数テンプレート以来ニュースを聞かないのだけど
たいしたことしてないのかな?
148デフォルトの名無しさん:2006/05/26(金) 20:03:21
まだまだバグフィックスが減らないなあ
149デフォルトの名無しさん:2006/05/26(金) 20:46:17
バグそのものが打ち止めでフィクス件数が一定ってのなら先はあるんだけどね
fix/bugってどこで調べられるん?
150デフォルトの名無しさん:2006/05/27(土) 00:06:30
>>149
NewsgropusのD.bugsか、Bugzillaあるいは、Dstress。
151デフォルトの名無しさん:2006/05/27(土) 15:51:46
D 0.159
152デフォルトの名無しさん:2006/05/27(土) 20:50:15
gdc 0.18
153デフォルトの名無しさん:2006/05/28(日) 10:21:52
すいません、質問です。
din.readLine() を使って標準入力をすべて受け取るループはどうやって書くんでしょうか?
標準入力の終端の検出方法がわからないのですが orz
154デフォルトの名無しさん:2006/05/28(日) 10:26:58
>>153
readLineを諦めて下みたいに書くじゃ駄目?
foreach(char[]line;din){
}
155デフォルトの名無しさん:2006/05/28(日) 10:46:30
ありがとうございます。
一行ずつ読めたらOKです。
ストリームに対してもforeach使えたんですね。
156デフォルトの名無しさん:2006/05/28(日) 10:50:11
ストリームに対してforeachが使えるってどこかに書いてありましたっけ?
157デフォルトの名無しさん:2006/05/28(日) 10:55:35
>>156
http://www.kmonos.net/alang/d/phobos/std_stream.html
std.Stream.opApplyに書いてますね。

opApplyってうまく使うと中々便利です。
158デフォルトの名無しさん:2006/05/28(日) 11:09:10
ほんとだ・・・。
一度ちゃんと読み直す必要がありそうです。
ありがとうございました。
159デフォルトの名無しさん:2006/05/28(日) 11:35:13
if [ -f include/fixed ] ; then true; ¥
else ¥
: This line works around a 'make' bug in BSDI 1.1.; ¥
FIXPROTO_DEFINES=""; export FIXPROTO_DEFINES; ¥
mkinstalldirs="/bin/sh ../../gcc/mkinstalldirs"; ¥
export mkinstalldirs; ¥
if [ -d "/usr/include" ]; then ¥
/bin/sh ../../gcc/fixproto include include /usr/include; ¥
if [ $? -eq 0 ] ; then true ; else exit 1 ; fi ; ¥
else true; fi; ¥
echo timestamp > include/fixed; ¥
fi
fixproto: populating `include'
(No *.h files in /Users/Yume/tmp/gdc/gcc-3.3.6/build/gcc/include/d)
(No *.h files in /Users/Yume/tmp/gdc/gcc-3.3.6/build/gcc/include/d/3.3)
(No *.h files in /Users/Yume/tmp/gdc/gcc-3.3.6/build/gcc/include/d/3.3/etc)
(No *.h files in /Users/Yume/tmp/gdc/gcc-3.3.6/build/gcc/include/d/3.3/etc/c)
make[1]: *** [stmp-fixproto] Error 1
make: *** [all-gcc] Error 2

gdc 0.18 gcc 3.3.6 Mac OS X 10.3.9
ここで止まっちゃう…
160デフォルトの名無しさん:2006/05/30(火) 20:39:51
gccを使ったC++やCからのヘッダ変換ktkr
http://www.dsource.org/projects/bcd
gccxmlが必要らしい。
161デフォルトの名無しさん:2006/06/04(日) 02:34:08
リファレンスの日本語訳の更新が1ヶ月以上止まってるな…。
162デフォルトの名無しさん:2006/06/04(日) 09:44:23
そりゃここまでだらだら作られたら飽きるわなw
163デフォルトの名無しさん:2006/06/04(日) 11:13:25
164163:2006/06/04(日) 12:22:40
    if(hours>=17||hours<=4){
      if(instance.classinfo!=typeid(Night))
        change!(Night)();
    }else{
      if(instance.classinfo!=typeid(Day))
        change!(Day)();
    }

    if(hours>=17||hours<=4){
      if(instance.classinfo!=Night.classinfo)
        change!(Night)();
    }else{
      if(instance.classinfo!=Day.classinfo)
        change!(Day)();
    }
の間違い
165デフォルトの名無しさん:2006/06/04(日) 14:06:49
ifとかswitchで分けてるようじゃオブジェクト指向のStateパターンとは言わないんじゃないのか?
166デフォルトの名無しさん:2006/06/04(日) 14:14:10
Stateはswitchをポリモフィズムに置き換えたものでは?
167デフォルトの名無しさん:2006/06/04(日) 15:12:50
ちょっと整理してみた。
http://dream.my-sv.net/upload/vipprg/src/up0010.d

ようするにContextうぜーのでStateの中で収まってほしいと。
168デフォルトの名無しさん:2006/06/04(日) 15:14:37
>>161
ちょっといま死ぬほど忙しいのでもうしばらく待ってちょ
……と日本語訳の中の俺がいってた。
169デフォルトの名無しさん:2006/06/04(日) 15:24:48
>>168
Noahだけはガチで便利なので愛用してます。ありがとう。
170デフォルトの名無しさん:2006/06/04(日) 15:33:34
>>168
死ぬほど忙しい癖に反応早いじゃねーか。
サボって2chばっかしてるのを忙しいなんて言うな。
171デフォルトの名無しさん:2006/06/04(日) 15:35:17
記念カキコ
172デフォルトの名無しさん:2006/06/04(日) 16:08:20
>>170
他の人にスレで煽られてるよ、とか教えてもらったとかじゃない?
173168:2006/06/04(日) 16:16:11
>>170
まったくだw
174デフォルトの名無しさん:2006/06/04(日) 18:06:33
忙しい時ほどやらなくてもいいことを
やって現実逃避してしまう人間の性…乙カレー
175デフォルトの名無しさん:2006/06/04(日) 19:52:34
IA-64 CPUで実行したら馬鹿みたいに遅い
64ビットコンパイラはでないのか。。。
176デフォルトの名無しさん:2006/06/04(日) 19:57:30
>168は偽者なので相手にしないでください、と本物の中の人が言ってます。

wなんて使いませんから。
177デフォルトの名無しさん:2006/06/04(日) 22:53:26
どーでもいいよ
178161:2006/06/05(月) 03:00:35
>>168 急かしてしまってすんません。
179デフォルトの名無しさん:2006/06/05(月) 12:22:53
dmd 0.160
180デフォルトの名無しさん:2006/06/05(月) 13:17:58
New/Changed Features

* Documentation is much more controlled by style sheets now.
* AssertExpression's can now take an optional informational string as the second parameter. Static assert's can, too.
* Added Expression.NewExpression so inner classes can be initialized more conveniently.
* Added operator overloading of InExpression.
* For Windows, looks for sc.ini in:
1. The current working directory
2. The directory specified by the HOME environment variable
3. The directory dmd.exe resides in
* For Linux, looks for dmd.conf in:
1. The current working directory
2. The directory specified by the HOME environment variable
3. directory dmd resides in
4. /etc/
181デフォルトの名無しさん:2006/06/05(月) 15:36:56
>>168
ttp://www.kmonos.net/alang/d/japanese.html
> 生存報告のために更新してみるテスト
がんばれー
182161:2006/06/05(月) 16:15:45
我、訳者ノ生存ヲ確認!!
NDSの英語漬けFランクの俺に手伝えることはあるか?
183デフォルトの名無しさん:2006/06/05(月) 17:53:29
184デフォルトの名無しさん:2006/06/06(火) 00:09:17
http://f17.aaa.livedoor.jp/~labamba/?%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB
を参考にDWTをインストールしようとしたら
E:\D\dmd\import>build -release -O -clean -inline -lib -full -allobj dwt\all.d -
T..\lib\dwt.lib -version=OLE_COM -version=DRAG_DROP
'E:\D\dmd\bin\lib' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
ってなってインストール出来ない…
何か心当たりある人は居ませんか?
185デフォルトの名無しさん:2006/06/06(火) 01:43:01
PATHは通っている?
186デフォルトの名無しさん:2006/06/06(火) 02:07:48
すいません,またお助けください.
こないだ foreach(char[] line; din) を教わった者です.
これはリダイレクトならうまくいくのですが,
a.exe < text.txt
パイプで接続すると無限にループしてしまいます.
type text.txt | a.exe
リダイレクトと同じように動作させるにはどうしたらよいのでしょうか?

サンプルコード
--
import std.cstream;
int main(char[][] args)
{
foreach(char[] line; din)
{
dout.writef(line, "\n");
}

return 0;
}
187デフォルトの名無しさん:2006/06/06(火) 02:08:28
しまった
空白はなくなるんだった orz
すいませんが脳内修正してください
188184:2006/06/06(火) 08:09:04
>>185
ちゃんとPATHは通っています
189デフォルトの名無しさん:2006/06/06(火) 08:25:46
>>186
ホントだ。無限ループしてる。w
190デフォルトの名無しさん:2006/06/06(火) 08:42:38
>>184
E:\D\dmd\bin\にlib.exeを突っ込んでみたらどうだろうか。
191デフォルトの名無しさん:2006/06/06(火) 08:44:31
>>186

よく見ると最後に1行余分な改行が付くね

a.exe < text.txt > textout.txt

してみると分かる
192186:2006/06/06(火) 11:42:43
Phobosを眺めていて BufferedStream を見つけたので試してみました.
うまく動いているようです.
しかしこうしなきゃいけないもんなんでしょうかね.

Stream dinbuf = new BufferedStream(din);
foreach(char[] line; dinbuf)
{
 dout.writef(line);
}
dinbuf.close();
193186:2006/06/06(火) 11:51:55
あ,
 dout.writef(line);

 dout.writefln(line);
にしといてください(^^;
194184:2006/06/06(火) 20:21:16
>>190
お陰様でインストールできました
どうもサンクス
195デフォルトの名無しさん:2006/06/07(水) 20:49:15
テンプレートクラス内でもopApplyできるよね?
196デフォルトの名無しさん:2006/06/07(水) 23:21:39
できない理由がない。
197デフォルトの名無しさん:2006/06/08(木) 19:01:44
ローカライズ関係(GNUでいう処のgettext)やコード整形(GNUでいう処のindent)の内蔵まだー?

Example:
>type test.d
private import std.stdio;
char[] l="localized string"l;
void main(){writefln(l);}
>dmd -l test.d
>cp test.en.lang test.ja.lang
>nano test.ja.lang
>dmd test.d test.en.lang test.ja.lang
>test.exe
198デフォルトの名無しさん:2006/06/08(木) 19:39:45
build  3.00
199デフォルトの名無しさん:2006/06/08(木) 19:49:26
>>197
馬鹿?
200デフォルトの名無しさん:2006/06/08(木) 23:27:47
ていうかコンパイラ経由でコードアナライザが早く作れないものか。
これが出来てしまえばD用Eclipseプラグインにも拍車が掛かるというもの。
きょうび本体よりも付加価値に需要があるもんだ。
201デフォルトの名無しさん:2006/06/08(木) 23:38:15
ある種そういうAPIはDMが用意していいものかもな
IDEがDじゃなきゃいけないなんて誰も思わないだろうし
202デフォルトの名無しさん:2006/06/10(土) 08:19:11
>>192
うまく動いているというより
バッファのおかげで止まってるだけのような気がする
203デフォルトの名無しさん:2006/06/11(日) 00:49:26
>>201
しかもALL自作だとパーサがコンパイラ実装の車輪になってしまう。
204デフォルトの名無しさん:2006/06/12(月) 20:59:05
>>202
止めたくて止まったんだからそれでいいのでは
205デフォルトの名無しさん:2006/06/14(水) 21:58:07
インテリセンス完備のIDEまだ〜?チンチン!!(AA略)
206デフォルトの名無しさん:2006/06/14(水) 23:19:17
俺はもうひたすらsakuraエディタで書いているよ。
最近、CTRL+SPACEで同一ファイル内での補完ができることに気づいた。
207デフォルトの名無しさん:2006/06/15(木) 00:11:43
ずっと秀丸だったけどさくらエディタ試してみたら補完機能って思ってたより美味いね
それで十分だとは思わないのだけど
208デフォルトの名無しさん:2006/06/15(木) 01:23:51
開いてる全部のファイルの単語から補完してくれるxyzzy万歳。
209デフォルトの名無しさん:2006/06/15(木) 02:19:34
へたれなのでviやemacsのキーバインドがどうにも覚えられない
210デフォルトの名無しさん:2006/06/15(木) 04:17:28
>209
roguelikeやればとりあえずviでのカーソル移動はスムーズに行えるぞ

viはナナメ移動できないけど
211デフォルトの名無しさん:2006/06/15(木) 05:43:14
まあ新しい言語覚えるようなもんだ。

ただ、emacsやviの場合は、操作系統だけじゃなくて機能も
変わってくるから、より移行が大変なんだけどな。

忘れては覚えなおすのを慣れるまで続ける必要はある。
たしか、emacsやvimにはチュートリアルがついてくるから、
それを出す方法さえ覚えておけばなんとか。


xyzzyは、/++/形のコメントに対応してるd-modeがないから
お勧めできないけどな。
212デフォルトの名無しさん:2006/06/15(木) 06:52:45
業務PGはとりあえずviは覚えとか無いと苦労すると思うよ
今時どこでもWin開発Lin鯖だけど、設定ファイル弄るのにいちいちFTP使いたくないでしょ
213209:2006/06/15(木) 16:43:37
基本的な編集機能はどちらも覚えてあるんだけど,コピペとか検索とかすぐ忘れる
だよね
あぼーん
214デフォルトの名無しさん:2006/06/15(木) 21:57:02
>>212
最近のLinuxて今でもviなん?
なんて、俺はBSDなんだけど
すれ違い乙
215デフォルトの名無しさん:2006/06/15(木) 22:02:40
大抵のサーバーにはあったら嬉しいと無くては困るの両方が入ってる。
これはシェル、エディタあたりには共通して言える事柄だね。(Linuxだとシェルは固定だろうけど)
216デフォルトの名無しさん:2006/06/16(金) 00:47:11
EclipseでJavaな環境を味わってしまったらDがツラくてたまりません。
Javaのプラグイン改造してなんとかDに対応できんものか。
217デフォルトの名無しさん:2006/06/16(金) 17:32:48
そういえばdoxygenってDのコードをパースしてるんでは
218デフォルトの名無しさん:2006/06/18(日) 01:04:54
writefで%xの表示がおかしいから調べてたら前スレ937で既出だった。
いつ直るんだろうこれ…(´・ω・`)
このバグを回避するためのphobosの修正箇所とかわかる人いない?
219デフォルトの名無しさん:2006/06/18(日) 01:27:17
しばらくの間はアダプタパターンでごまかしとけば?
220デフォルトの名無しさん:2006/06/18(日) 09:33:21
>>218
std.format.dだったはず
221デフォルトの名無しさん:2006/06/20(火) 18:55:25
v161
222デフォルトの名無しさん:2006/06/20(火) 18:58:15
おーなんか無名関数が劇的に書きやすくなってるな。
関数型言語臭が非常に強くなったw
223デフォルトの名無しさん:2006/06/20(火) 18:59:38
D 0.161
Jun 19, 2006
New/Changed Features

* Added opIn_r operator overload.
* Function return types for lambda delegates can now be inferred.
* delegate keyword now optional for lambda delegates.
* Shadowing local variable declarations is now deprecated.
* New function template syntax.
224デフォルトの名無しさん:2006/06/20(火) 20:45:08
loop(5, 100, { d += 1; } );

イイヨーイイヨー
225デフォルトの名無しさん:2006/06/20(火) 20:47:25
>>224
Rubyのブロック構文みたいだw
すげー
Dやりたくなってきたw
226デフォルトの名無しさん:2006/06/20(火) 20:58:10
あー
変更がわかりやすいサンプルコードも一緒に書いて欲しい(T-T
せめてドキュメントのどこが変化したのか簡単にわかればなぁ

// * New function template syntax.
//
// template Square(T)
// {
//  T Square(T t)
//  {
//   return t * t;
//  }
// }
// これがこんな感じになったらしい
T Square(T)(T t)
{
  return t * t;
}
227デフォルトの名無しさん:2006/06/20(火) 21:05:37
シンプルになっていいとは思うが、C++化も著しいような
templateが名前空間を持つって意味無かったな
228デフォルトの名無しさん:2006/06/20(火) 21:07:00
まだ全然わかってないがこの二つで実現されてる気がする
間違ってたらすまんw

// * Function return types for lambda delegates can now be inferred.
// * delegate keyword now optional for lambda delegates.
double test()
{
 double d = 7.6;
 float f = 2.3;

 void loop(int k, int j, void delegate() statement)
 {
  for (int i = k; i < j; i++)
  {
   statement();
  }
 }

 loop(5, 100, { d += 1; } );
 loop(3, 10, { f += 3; } );

 return d + f;
}
229デフォルトの名無しさん:2006/06/20(火) 21:41:41
>>226
Square(3);

で使えるのは前からだっけ?
230デフォルトの名無しさん:2006/06/20(火) 21:48:32
>>229
0.149からだったと思う。
231デフォルトの名無しさん:2006/06/20(火) 21:50:33
>>227
関数テンプレートの暗黙のインスタンス化が楽になったけど(↓)

T min(T)(T a, T b)
{
 return a<b?a:b;
}
void main()
{
 dout.writef(min(10,20));
}

その名前空間の話と両立させることはできないのかな
232デフォルトの名無しさん:2006/06/20(火) 21:56:54
loopってなんなの?
233231:2006/06/20(火) 21:57:07
あれ?普通にできますね orz
脊髄反射だめぽ
234デフォルトの名無しさん:2006/06/20(火) 22:08:51
>>231
(限定的な)Implicit template instantiationの対象となる関数テンプレートが、
新しい文法で書かれたものになるってことではないかと。
235デフォルトの名無しさん:2006/06/20(火) 22:09:23
言語の機能がかなり増えてきたな・・・
そろそろD言語プログラミングの手引きになる良い本が欲しくなってきた
気が早いのはわかってるけどww
今のところtemplate周りはC++の本,あとはC#の本で代用するしかないのが悲しい
236デフォルトの名無しさん:2006/06/21(水) 03:15:01
>>234
今は違うみたいだけど、それいいね。
237デフォルトの名無しさん:2006/06/24(土) 11:58:45
βの間に次のαが飛び込んでくるからverが1にならないのか。
Javaとかでは決して出来ない仕様の作り方だ。
いつ仕様をコミットする気なのか聞いてみて欲しいw
238デフォルトの名無しさん:2006/06/24(土) 12:27:50
言語開発をDigital Marsが一手で進めているからこそできる芸当だよな。
プログラマなんだから、開発のやめどころを計る能力はあると思う。
DMが満足するまでにD言語がどこまで行ってしまうのか楽しみ。皮肉抜きで。
239デフォルトの名無しさん:2006/06/25(日) 00:50:45
基本データ型から派生して値の範囲や配列長の制約とかを定義できるようなのがサポートされたらイイナ。
いまそこら辺を担ってるのがクラスの不変条件だけど、
基本データ型の変数をメンバに持つクラスが変数の値の範囲の責任を持つんじゃなくて
メンバとして扱われる変数の型が範囲の責任を持つような感じ。
240デフォルトの名無しさん:2006/06/25(日) 01:48:50
>>239
クラスってユーザ定義の「型」でしょ
あとはオペレータオーバーロードでごまかせればそれでいいんじゃね?
どこまで基本型を模倣するかはクラスの設計者が考えたらいいんだし

>>237-238
思うんだが「とりあえずver1にする」の段階まで全然来てないんじゃないのか
うぉるたんは

> 今後の方向性
> 以下の新しい機能のDへの実装を計画していますが、 詳細はまだ定まっていません:
> Templateの継承
> 配列演算
> 配列リテラル

も構想してるだけの段階だろ
IDEがどうのこうの言うのはまだ早いってのと同じで
ver1マダー?
ってのは時期尚早じゃね?
241デフォルトの名無しさん:2006/06/25(日) 01:53:31
0.99の時の淡い期待があったころが懐かしいw
もはや永遠の17歳よろしく永遠のβと呼ばれるポジションに来ている
242デフォルトの名無しさん:2006/06/25(日) 02:29:26
それでも0.999なら…0.999ならなんとかしてくれる(?)
243デフォルトの名無しさん:2006/06/25(日) 04:47:57
0.1000になります
244デフォルトの名無しさん:2006/06/25(日) 04:53:33
それは正規化ですよね
245デフォルトの名無しさん:2006/06/25(日) 14:45:07
DでXML弄りたい場合って何使うのが普通?
246デフォルトの名無しさん:2006/06/25(日) 15:52:33
>>240
つーか例えば
「型Fooはint型の変数valueをメンバに持ち、外部から参照すると
 valueの範囲が常に0〜31であることを保証するクラスである」
ではなくて
「型Fooは0〜31の範囲の値をとり得るint型である」
みたいな簡単な定義ができるようなのがサポートされたらイイナって話。
基本型の値に対する契約表明みたいな位置づけで。

簡単な定義を簡単に記述できるわけだし、
Foo is intだから変数は参照型じゃなくて値型として処理できるし。
247デフォルトの名無しさん:2006/06/25(日) 15:54:39
>>245
俺の作った中途半端なSAXがあるけど欲しい?
248デフォルトの名無しさん:2006/06/25(日) 16:00:25
>>246
コンパイラが認識可能なアノテーションみたいな感じかな
249デフォルトの名無しさん:2006/06/25(日) 20:03:31
// こうじゃなくて
int a;
assert(a>=0 && a<=31);
// こんなふうに書いて
int b {assert(b>=0 && b<=31);};
b = 20; // 書き込みは不変条件評価
int c = b; // 読み込みは評価せず
// って感じかね。後はtypedefを拡張して
typedef int Foo(value) {assert(value>=0 && value<=31);};
// とか。やりたいことはわかる
// アスペクト指向を基本型でもできるのが近いかもしれない
250デフォルトの名無しさん:2006/06/25(日) 21:56:34
>>249
そのtypedefを拡張ってのがかなりイメージに近いかな。
typedef+invariantな「もっと強い型」がホッスィ。
(alias+invariantでもいいけど)

業務ルール的な値の範囲チェックや配列長チェックなどの他の面でも、
その型の変数の値を参照するときには「不変条件が守られている」ことが
証明(デバッグ時に限り?)されてるからいろいろと便利になると思ふ。
251デフォルトの名無しさん:2006/06/25(日) 21:58:58
×配列長チェックなどの他の面でも、
○配列長チェックなどの面の他にも、
252デフォルトの名無しさん:2006/06/25(日) 22:30:32
デバッグ時に限らないと性能低下が痛いしね
253デフォルトの名無しさん:2006/06/25(日) 23:33:19
普通なら、関数でラップするか、クラス作るかってとこだな・・
254デフォルトの名無しさん:2006/06/25(日) 23:45:11
ならunittestでいいじゃん
255デフォルトの名無しさん:2006/06/25(日) 23:53:47
pascalなら部分範囲型というものがデフォルトで存在してるんだが。
256デフォルトの名無しさん:2006/06/26(月) 00:09:41
しかしこれはpascalじゃないんだ。
257デフォルトの名無しさん:2006/06/26(月) 00:11:37
typedef int xint = 10;
で、初期値が指定できるので、
typedef int xint[0,100] = 10;
みたいな感じでできたらいいなあ。

258デフォルトの名無しさん:2006/06/26(月) 01:42:21
>>257
知ってたらスマソが
typedef int[0,100] xint = 10;
じゃなくて
typedef int[100] xint = 10;
だったら現状でもできるよ。
259デフォルトの名無しさん:2006/06/26(月) 01:53:27
xintが0から100まで(100-1まで?)の値しかとらないようにしたいということではないのか
260デフォルトの名無しさん:2006/06/26(月) 01:56:29
>>256
部分範囲型があるのと、実際に範囲チェックしてくれるのとは別だけどな
Delphiとか('A`)
261デフォルトの名無しさん:2006/06/26(月) 01:57:35
>>260
つ{$R+}
262デフォルトの名無しさん:2006/06/26(月) 01:58:20
ああDelphiはコンパイルオプションで範囲チェックを無しにできるな。
範囲チェックすると普通に遅くなるし。
263デフォルトの名無しさん:2006/06/28(水) 00:02:44
>>245
indigo.xml.expat はなかなかよく働いてくれています。
264デフォルトの名無しさん:2006/06/28(水) 01:22:45
D言語の構造体ってアクセス属性の指定ちゃんと効くのか…
以前どうなるか試したら構造体のprivateメンバに自由にアクセスできたから
それ以来ずっと構造体のメンバにアクセス属性指定しても無視されるものなのかと思ってた。

同じモジュール内で試したらそりゃ自由にアクセスできる罠。
265デフォルトの名無しさん:2006/06/28(水) 01:42:08
モジュールとか考えないで気負わずに書き始めて一つのファイルに全部書いたら
アクセス指定が意味ないことに後で気づいたりする

ファイル内で名前空間みたいにモジュール空間を指定できたらいいのになー
考えたことなかったけどモジュール空間の分割ってできたっけ?
266デフォルトの名無しさん:2006/06/28(水) 01:56:53
templateで名前空間区切って、mixinで導入、とか。
267デフォルトの名無しさん:2006/06/28(水) 03:20:20
なるほど
でもやっぱり分割はできないね
268デフォルトの名無しさん:2006/06/28(水) 08:00:32
言語仕様で「Only one module per file」って決まっちゃってるからファイル内モジュール空間の分割はムリポ。
んでprivateメンバにアクセスできる以上スコープ分割での誤魔化しは根本的な解決にならない。

この場合は素直にファイル分割じゃないかな。
アクセス指定が意味ないなーって状況に陥るってことは結合度の低いもんが混じっちゃってるんでしょ。
269デフォルトの名無しさん:2006/06/28(水) 16:42:54
ver1.0マダーッ?
270デフォルトの名無しさん:2006/06/28(水) 16:48:45
271デフォルトの名無しさん:2006/06/28(水) 20:10:47
>>268
別の考え方をするなら、モジュールの規模を、
アクセスコントロールなしでもミスを起こさない程度にすべしってことでもあるかな。
272デフォルトの名無しさん:2006/06/28(水) 20:30:43
で、モジュールはパッケージでまとめて、protectedをうまく使いましょうね、
ということか。
273デフォルトの名無しさん:2006/06/28(水) 21:04:56
1ファイル1クラスって素敵じゃん
274デフォルトの名無しさん:2006/06/28(水) 22:00:43
int main(){
if( 0 == 1 ){
return 0;
}
}

1.61でコンパイルすると
Error 42: Symbol Undefined __d_assert_msg
--- errorlevel 1
というエラーがでるようです。(1.60では普通に通る)
明らかにソースはおかしいですがシンタックスエラーにはならないようですね。
275デフォルトの名無しさん:2006/06/28(水) 22:05:50
どなたか、yaccとlexみたいなものを書いていただけないでしょうか。
あの、Ragel State Machine Compiler みたいなもので
お茶をにごされてもちょっとなので。
ANTLRっぽいOOしているものは、はっきり言ってイヤです。
276デフォルトの名無しさん:2006/06/28(水) 23:48:27
すでにyaccやらlexやらその亜種やら派生種やらが多数あるのにあえてDで作る意味って何?
277デフォルトの名無しさん:2006/06/29(木) 00:06:48
ガベコレ
278デフォルトの名無しさん:2006/06/29(木) 00:35:29
>>276
Dでyaccやlexを作るのではなく、Dとの親和性の高いコードを吐くyaccやlexです。

まず、ハイスペックな人をDの方へ誘致すべきだと思うのですが、
そのためには、このあたりのツールは必須かとおもいますた。
279デフォルトの名無しさん:2006/06/29(木) 01:29:35
ハイスペックな人っていうのは、
Conroe2 ES版とかを使っている人の事か?
280デフォルトの名無しさん:2006/06/29(木) 02:22:08
いや、CPUぐらいは自作のやつをつかっている人のことだろ

CPU:自作 (3.75GHz)
MEMORY:2048MB PC2-4200 DDR2-SDRAM メモリー
HDD:シリアルATA 1.2TB(3個x400GB) 7200rpm 8M ハードディスク
グラフィックス:256MB RADEON X1900GT ビデオカード
M/B:ASUS P5WD2-E ATX マザーボード
281デフォルトの名無しさん:2006/06/29(木) 04:13:58
>CPUぐらいは自作
282デフォルトの名無しさん:2006/06/29(木) 04:40:17
>CPUぐらいは自作
父さん・・・酸素欠乏症にかかって・・・
283デフォルトの名無しさん:2006/06/29(木) 05:31:32
ネタだとは思うけど。
ネタでも86互換ってのは悲しい現実。
284デフォルトの名無しさん:2006/06/29(木) 06:09:48
implib無くね?
285デフォルトの名無しさん:2006/06/29(木) 07:06:32
>>275
> ANTLRっぽいOOしているものは、はっきり言ってイヤです。

OOっぽいコードを吐くかどうかは、はっきり言ってどうでもいい気がするんだが。
どうせParser Generatorを使う場合、生成されたコードを利用するだけなわけだし。
というかむしろ、素のyaccみたいにグローバル変数使いまくりでreentrantじゃない
コード吐かれる方がよっぽど困るような。
286デフォルトの名無しさん:2006/06/29(木) 08:17:43
同感
287デフォルトの名無しさん:2006/06/29(木) 12:36:57
DGrammar - Grammar compiler/compiler for D which uses syntax like yacc - fully OOP
http://www.dsource.org/projects/dgrammar
288デフォルトの名無しさん:2006/06/29(木) 12:38:26
289デフォルトの名無しさん:2006/06/29(木) 20:52:27
D言語には=演算子のオーバーロードが組み込まれてないんだけど
=演算子のオーバーロードに対するWalterタンの見解とか記事とか
過去のD言語スレで話題になったとかない?

非常に知りたいことなんだけど=が無視されてググれん。
290289:2006/06/29(木) 20:56:08
スマソ。
>>289書き込んだ後引き続き探したら即効で見つけた。
291save:2006/06/29(木) 22:02:02
>>287
>>288

サソクス
292デフォルトの名無しさん:2006/07/01(土) 11:31:12
DMD 0.162
293デフォルトの名無しさん:2006/07/01(土) 16:27:41
>>292
Bugs Fixedだけか・・・
294デフォルトの名無しさん:2006/07/02(日) 15:51:07
0.162でwin32.windows(ttp://hp.vector.co.jp/authors/VA028375/)をimportすると

"0x0040a1ce"の命令が"0x00000000"のメモリを参照しました。メモリが"written"になることはできませんでした。

とかいうエラーが出るんですが‥‥ 0.161からなんか変わったんですかね。
修正履歴見るとバグ修正しかないように思えますけど。
295デフォルトの名無しさん:2006/07/02(日) 17:02:23
そういうことだったのか!
>>294トンクス、漏れは0.161に戻す。
296デフォルトの名無しさん:2006/07/05(水) 22:53:24
たいしたことじゃないんですけど教えてください

三項演算子の条件で前置インクリメントしたときに
実行ステートメントが期待通りにならないんですけどそういうものなんですか
297デフォルトの名無しさん:2006/07/05(水) 23:15:38
お前の期待通りとやらがどういった動作なのか他人には分からんと思う。
298デフォルトの名無しさん:2006/07/05(水) 23:17:28
>>296
とりあえず、問題の発生する三項演算子の式と、それの期待する動作を書け。
299デフォルトの名無しさん:2006/07/06(木) 06:44:24
>>296
C言語で同じ式を書けば違う動作をするんだろうな?
300デフォルトの名無しさん:2006/07/06(木) 08:54:28
>>297-299
例えばこんなの

int i=0;
printf(++i?"%d\n":"",i);

期待する出力は1なんだが0が出力される
C、JAVAで同様のコードを書くとちゃんと1が出力される
301デフォルトの名無しさん:2006/07/06(木) 09:05:39
>>300
C,Dでは引数の評価順序は実装依存。
そんなコードを書いてはいけない。

Javaは左から右と決まっているのな。知らんかった。
302デフォルトの名無しさん:2006/07/06(木) 15:44:53
>>300
それは動作不定の書いてはいけないコード
303デフォルトの名無しさん:2006/07/06(木) 21:26:03
>>301
>>302
ご指摘の通り、言語仕様にもちゃんと書いて有りました
お騒がせ致しました
304デフォルトの名無しさん:2006/07/08(土) 09:03:28
OBJ[] o = new OBJ[0];
o ~= new OBJ;

これって有効?
この時点でのo.lengthは1だよね
305デフォルトの名無しさん:2006/07/08(土) 09:32:37
std.gc.disable されてるときは delete したときに gc 通してでも開放して欲しいとか思ったり・・・
でもやっぱりそんな事すると重くなるのかな
306デフォルトの名無しさん:2006/07/08(土) 09:32:57
>>304
ムリ
307デフォルトの名無しさん:2006/07/08(土) 12:41:01
.hからのマクロの変換が面倒杉
alias(T)(T a) G_TYPE_CHECK_INSTANCE_CAST(a, GTK_TYPE_BIN, GtkBin) GTK_BIN(a);のような事ができればいいのになぁ…
308デフォルトの名無しさん:2006/07/08(土) 18:25:49
>>305
選択肢としてあればメリットにもなると思うけどデメリットもあるよなあ
disableじゃなくてプールして再利用する設計にするほうがいいんじゃね

>>307
ttp://www.digitalmars.com/d/htod.html
使ったことないけどこれじゃできないの?
309307:2006/07/09(日) 23:08:54
そうだ、マクロ残したままにしてコンパイル前にgcc -Eをすればいいのか。#includeのせいでややこしくなるのが問題だけど。
310デフォルトの名無しさん:2006/07/10(月) 03:18:36
>>284
C++のページからBasic Utilities 落とせ。
あと、要するにOMF形式なのでborland c++やopen watcomのimplibもつかえる
311デフォルトの名無しさん:2006/07/12(水) 22:57:24
std.stream に truncate が無いけど仕様?
もしかして他のライブラリの中だったりする?
312デフォルトの名無しさん:2006/07/13(木) 12:04:21
モナドってこんな感じだっけ?
T[] monad(T)(T[] a,T function(T) f){
  T[] re;
  foreach(T b;a){
    re~=f(b);
  }
  return re;
}
uint a(uint a){
  return a+2;
}
uint b(uint a){
  return a-1;
}

void main(){
  static uint[] t=[0,1,2];
  writefln(monad(monad(t,&a),&b));
}
313デフォルトの名無しさん:2006/07/13(木) 14:18:45
× T[] monad(T)(T[] a,T function(T) f)
○ S[] monad(T,S)(T[] a,S[] function(T) f)
ならリストモナドのbindだな。
314デフォルトの名無しさん:2006/07/13(木) 14:21:26
どーでもいいことだが、
 writefln(monad(monad(t,&a),&b));

 t.monad(&a).monad(&b).writefln();
と書きたいところだ。
315デフォルトの名無しさん:2006/07/13(木) 23:36:45
こんなところにもモナドの波が
結局,合成関数と思ってていいんだろうか
よくわからん
316デフォルトの名無しさん:2006/07/14(金) 15:33:03
gdc 0.19

Download here:
http://sourceforge.net/project/showfiles.php?group_id=154306

Release Notes for 0.19
* Fixed D Bugzilla bugs 141(gdc), 157, 162, 164, 171, 174, 175,
192, 229
* Applied Dave Fladebo's suggestion for -O3 in gdmd
* Updated to DMD 0.162
* The version symbol for FreeBSD is now "freebsd"
* Enabled std.loader for FreeBSD
* Implement offsetof in assembler
* Support building with Apple's GCC (4.0 only)
* Fix parallel builds
317デフォルトの名無しさん:2006/07/17(月) 15:10:09
これって何時になったらver1.0がでるの?
このペースだと、でる頃には俺は爺になっていて
静かに盆栽でもいじってるよ。
318デフォルトの名無しさん:2006/07/17(月) 15:28:03
もうそのネタ秋田。永遠のβだから心配すんな。
見切りでライブラリ作ったら余裕でごみ化させてくれるぞ。
319デフォルトの名無しさん:2006/07/17(月) 22:06:09
こりゃもうウォルターに発展的解散を要求して開発主体をコミュニティーに移行する事を迫るしかないな。
PMだけならやってもいいけど。
320デフォルトの名無しさん:2006/07/17(月) 22:25:54
そういう糞の最小公約数的なものになりかねない
開発形態よりは独断専行の現状の方が期待が持てる。
321デフォルトの名無しさん:2006/07/17(月) 22:55:34
最小公約数?
322デフォルトの名無しさん:2006/07/17(月) 23:05:05
>317
余生をD言語をいじって過ごす生活、悪くないじゃん。


・・・そうか?
323デフォルトの名無しさん:2006/07/17(月) 23:05:37
>>321
1にしかならないという皮肉なのか、素ボケなのか、どっちだろうね。
324デフォルトの名無しさん:2006/07/17(月) 23:09:27
素ボケで、最大公約数の間違い
ってどうでもいいよね。すまんかった。
325デフォルトの名無しさん:2006/07/18(火) 01:06:44
ここはウォルターたんのはちゃ☆めちゃぶりに萌えるスレじゃなかったのか…
326デフォルトの名無しさん:2006/07/18(火) 01:10:58
そろそろこれで仕事してみたいんだが。
まあネイティブで高級OOは諦めろってことだね
327デフォルトの名無しさん:2006/07/18(火) 08:35:32
まだだ!まだあきらめんぞ!

STLのalgorithmとか,lokiのtypelist,functorとか,
boostのbindとかのDの実装を見かける度に色々と期待してるんだがなあ
328デフォルトの名無しさん:2006/07/18(火) 08:37:17
sage忘れた

Dが大躍進するロードマップが見えないんだよなぁ
まずは1.0になることからか…
329デフォルトの名無しさん:2006/07/18(火) 09:32:16
JavaやC#に対してアドバンテージがないとね
BetterThanC++程度じゃだめじゃない?
330デフォルトの名無しさん:2006/07/18(火) 11:27:27
欲しいのはそのBetterThanC++なんだけど。

俺は今のウォルターたんの独壇場を支持してるから、
どこぞの企業に捕らわれるのは気が進まないので
コミュニティに力をつけてもらうしかないかなと。
331デフォルトの名無しさん:2006/07/18(火) 18:42:21
更新履歴
0.150
0.151
0.152
0.153
0.154




ナメクジかおまえは。
332デフォルトの名無しさん:2006/07/19(水) 01:28:57
日本のD言語使いってどのぐらいいるんだろ。
1000人ぐらいいるのかな。
333デフォルトの名無しさん:2006/07/19(水) 01:49:53
D言語萌えー (280)
http://mixi.jp/view_community.pl?id=13952

少なくともこれだけはいるかもしれない
334デフォルトの名無しさん:2006/07/19(水) 02:24:25
見えない
335デフォルトの名無しさん:2006/07/19(水) 02:34:06
D言語萌えー (280) ←人数
336デフォルトの名無しさん:2006/07/19(水) 04:41:48
"D言語いいよな. 大好きだよ. " -- Coredump
337デフォルトの名無しさん:2006/07/19(水) 12:16:46
無駄にimportが拡張されたな
public import xx;はmodule test : xx;の方が良いと思うのだが…
338デフォルトの名無しさん:2006/07/19(水) 18:29:43
D 0.163
Jul 18, 2006
New/Changed Features

* Object.opCmp now throws an error. Should override it if used. Breaks existing code.
* Imports now default to private instead of public. Breaks existing code.
* Added static imports, renamed imports, and selective importing.
339デフォルトの名無しさん:2006/07/19(水) 18:49:36
デフォルトでprivateになったのは細かいけどいいんじゃないのかなあ
ちゅうか
Added static imports, renamed imports, and selective importing.
なんだこれ
どこに書いてるか探すか・・・
340デフォルトの名無しさん:2006/07/19(水) 20:35:12
static import:
static import hoge;
インポートしたモジュールのシンボルが、名前空間に導入されないので、
hogehoge() // エラー
hoge.hogehoge(); // Ok

renamed import:
import hoge=hagehogefuga;

hoge.hogehoge(); // Ok
hagehogefuga.hogehoge(); // error
hogehoge() // error

selective import:
import hoge : hogehoge, hagehage = hogehuge;

hogehoge(); // Ok
hagehage(); // Ok
hogehuga(); // error
341デフォルトの名無しさん:2006/07/19(水) 21:00:36
とてもありがたいのだがものすごくまぎらわしいなw
342デフォルトの名無しさん:2006/07/20(木) 01:13:33
なんでもっとシンプルにしようとしないんだ。
343デフォルトの名無しさん:2006/07/20(木) 01:41:41
そのうち消えるんじゃない?
boolって以前bitだった気がしたけど違ったっけ?
344デフォルトの名無しさん:2006/07/20(木) 01:56:20
>343
bitのaliasだったと思う。
345デフォルトの名無しさん:2006/07/20(木) 02:49:07

bit <- 組み込み型
alias bit bool


bool <- 組み込み型
alias bool bit

まぁ大した差ではないな。
346デフォルトの名無しさん:2006/07/20(木) 04:23:55
これから仕様変更する予定で公開されている仕様一覧みたいなのってないのかな
347デフォルトの名無しさん:2006/07/20(木) 05:10:33
これから346が作るらしいよ
348デフォルトの名無しさん:2006/07/20(木) 14:34:06

また、生存確認をやっとく?

ttp://www.kmonos.net/alang/d/index.html
349デフォルトの名無しさん:2006/07/20(木) 15:32:43
>>348
一ヶ月以上、経ってるから
確認すべきだな

管理人さん生きてますかー
350デフォルトの名無しさん:2006/07/20(木) 15:49:29
>>348

夏休みの宿題はギリギリになって慌てないように、早めにやっておくんだよ。
351デフォルトの名無しさん:2006/07/20(木) 16:03:27
ping japanese.document.d ...
352デフォルトの名無しさん:2006/07/20(木) 18:53:00
>>347
作るにしてもその元になる情報が公開されているのか
いないのかさえ知らないから出た質問なのだ
353デフォルトの名無しさん:2006/07/20(木) 18:55:23
今後の方向性

以下の新しい機能のDへの実装を計画していますが、 詳細はまだ定まっていません:

1. Templateの継承
2. 配列演算
3. 配列リテラル

--
これくらいしかわからんぞ
これらのどんなところが嬉しいのか考えてみようっと
354デフォルトの名無しさん:2006/07/20(木) 19:09:25
Unofficial D wish listに色々あるけど…
355デフォルトの名無しさん:2006/07/20(木) 22:01:12
「C++でnew/deleteでメモリを自己管理するの」と
「C++でpoolして再利用」
ってどっちが早いんだ?

Dではpoolじゃないとゲームとか止まるんだけど、ちょっと気になってみた。
356デフォルトの名無しさん:2006/07/20(木) 22:39:38
ttp://www.kmonos.net/alang/d/japanese.html
>pong >>348-351
>あうあーすみません。 さっき忙しい原因がだいたい終わったので、そろそろ復活します。 原文の更新量を把握してないので適当ですが、 今月中に追いつければいいなって感じで。
357デフォルトの名無しさん:2006/07/20(木) 22:58:40
>>354
thx
http://www.all-technology.com/eigenpolls/dwishlist/index.php?it=18
コンパイルの段階に関連が生じないなら,これいいなと思う
358デフォルトの名無しさん:2006/07/20(木) 23:08:12
でもそれが可能なら auto の型推論の存在理由がなくなってしまうのか
auto x = new A();
A x();
下の方がタイプ数少ないのに下にしてないってことは不可能ってことなのかなー.
359デフォルトの名無しさん:2006/07/21(金) 05:46:24
http://www.all-technology.com/eigenpolls/dwishlist/index.php?it=49
これいいなあ

左辺の型から自動判別して欲しいけど。
360デフォルトの名無しさん:2006/07/21(金) 23:09:17
>>358
下のやつは不可能でしょ。

returnType functionHoge();

と区別がつかない。
361デフォルトの名無しさん:2006/07/22(土) 03:03:40
関数内関数が定義できるから不可能なのか・・・
362デフォルトの名無しさん:2006/07/22(土) 11:56:08
Cでも関数内で関数の宣言は出来るでしょ。
363デフォルトの名無しさん:2006/07/22(土) 12:42:02

そうだっけ…
じゃあ何でですか?
364デフォルトの名無しさん:2006/07/22(土) 13:40:23
何が疑問かわかんねーよアホ
365デフォルトの名無しさん:2006/07/22(土) 13:53:12
type identifier (argument_list) ;
というのは、関数の宣言。

関数の定義は、
type identifier (argument_list) { function_body }

関数の定義とは区別つくけど、宣言と区別がつかないからダメって話じゃないの?

366デフォルトの名無しさん:2006/07/22(土) 23:49:27
すまんすまん
CでもC++でも区別が付くのにDでダメなのは何でかなと思って
367デフォルトの名無しさん:2006/07/22(土) 23:55:15
>>366
C/C++でも区別つかねーよ。
int x();とでもコンパイラしてみ
368デフォルトの名無しさん:2006/07/23(日) 00:37:06
0.163で追加された selective importだけど、
public としてしかimportされないがな。orz

private alias int hoge;
と書いてもprivateなaliasにならない。orz
369デフォルトの名無しさん:2006/07/23(日) 11:10:04
Walterタソがこんなこと言ってるぜ!
ttp://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D/40572
370デフォルトの名無しさん:2006/07/23(日) 12:29:26
Internal Server Error でみえないけど、D 0,163 が D1.0 だぜってやつ?
371デフォルトの名無しさん:2006/07/23(日) 12:33:33
Article Numberで調べると、

Subject: Is D 0.163 D 1.0?
From: Walter Bright
Date: Sat, 22 Jul 2006 00:30:35 -0700

I think the title says it all.

なんか、中途半端な1.0だなあ、、、
372848:2006/07/23(日) 12:46:09
お、ということは本格的にライブラリとか開発ツールとかに手を付けてよかとということか!?
373デフォルトの名無しさん:2006/07/23(日) 12:56:20
>>371
同意。
!inとかarray initialization/literalsとかforeachの拡張だとかループのretryだとかネスト関数用の多段階returnとか多段階breakとかcのヘッダファイルを直接インポートできるようにするとかして欲しいし。
374848:2006/07/23(日) 14:28:59
>cのヘッダファイルを直接インポート
これやるとなるとマクロとかを解析しなくちゃならないから
せっかくコンパイルがちょっぱやなのに
少しの手間を省くためにCコンパイラ並みに遅くなったら嫌過ぎる。
そのうち誰かがツールを作るんじゃね?
375デフォルトの名無しさん:2006/07/23(日) 14:51:00
直接インポートはいらん。マクロを使ってるものだとどうしても確認する必要はあるし、
トラブルの元だと思う。

ネスト関数からの多段階returnって要るかなあ?
breakはラベル付きbreakで代用すればいいらしい。
376デフォルトの名無しさん:2006/07/23(日) 15:03:45
>>367
あれ・・・デフォルトコンストラクタの呼び出しなら A x(); でも A x;
でもいいのかと思ったら前者は駄目なのか・・・大丈夫なんだと思ってたよ orz
吊ってきます
377デフォルトの名無しさん:2006/07/23(日) 17:34:21
>>376
低脳は永遠に黙ってれば恥かかずに済むってことを覚えとけ
378デフォルトの名無しさん:2006/07/23(日) 17:54:12
extern(Windows)な関数ポインタへキャストする場合はどう書くの?

import std.c.windows.windows;
HMODULE hModule = LoadLibraryA("UNLHA32.DLL");
//WORD WINAPI UnlhaGetVersion(VOID)
extern(Windows) short function() UnlhaGetVersion_;
UnlhaGetVersion_ = cast(???) GetProcAddress(hModule,"UnlhaGetVersion");

???の部分。

とりあえず、受け側をキャストして誤魔化したけど
*(cast(void**)&UnlhaGetVersion_) = GetProcAddress(hModule,"UnlhaGetVersion");
379デフォルトの名無しさん:2006/07/23(日) 17:59:06
UnlhaGetVersion_ = cast(short function())GetProcAddress(hModule,"UnlhaGetVersion");
で良くね?
380デフォルトの名無しさん:2006/07/23(日) 18:02:32
関数の呼び出し規約をムリヤリキャストしてちゃんと動くものなのか?
381デフォルトの名無しさん:2006/07/23(日) 18:03:44
cast(typeof(UnlhaGetVersion_))
382デフォルトの名無しさん:2006/07/23(日) 18:06:17
正直フリーソフトって作るものが無いから
Dがどれだけ便利でも仕事に使えなきゃ触らないかも
試しにサーバ作ってみたけど置く場所ないし
383デフォルトの名無しさん:2006/07/23(日) 18:08:35
>正直フリーソフトって作るものが無いから
発想が貧困なだけだろ
384デフォルトの名無しさん:2006/07/23(日) 18:18:05

作りたいものがあるけど今の仕様だとちょっとなぁ

と二の足を踏んでいる
385デフォルトの名無しさん:2006/07/23(日) 18:19:55
>>383
まず必要なものが存在しない
他人の需要は俺の需要じゃないからな
386デフォルトの名無しさん:2006/07/23(日) 18:23:12
>>385
>必要なものが存在しない
何作りたいのさ?
387378:2006/07/23(日) 18:50:41
>>381
やっとエラー出なくなった。
サソクス
388デフォルトの名無しさん:2006/07/23(日) 21:43:14
>>386
満足している状態から、さらに必要なものを作れる奴って凄いと思う。
389デフォルトの名無しさん:2006/07/23(日) 21:52:32
俺ちょっと作りたいもの見えてきた。
D言語でWindowsサービスとか作れないかな?
いやWinAPIが使えるんだから当然できるのか
390デフォルトの名無しさん:2006/07/24(月) 18:31:19
>>389
作れないかな?と思う前にコードを書くんだ。
391デフォルトの名無しさん:2006/07/24(月) 19:00:48
>>390
言いたい事は分かるがそれってちょっとどうよ?
392デフォルトの名無しさん:2006/07/24(月) 20:48:48
お前の日記帳じゃないんだから
糞の役にも立たないお前のやりたいことを書くくらいなら
「サービスの作り方inD」実践の報告を投稿するくらいしろ

という話だと解釈した。
393デフォルトの名無しさん:2006/07/25(火) 03:36:03
わかったよ

やればいいんだろ
394デフォルトの名無しさん:2006/07/25(火) 18:08:26
一番いいGUIライブラリってDWTってのでOK?
395デフォルトの名無しさん:2006/07/25(火) 18:50:25
DFLじゃね?
396デフォルトの名無しさん:2006/07/25(火) 21:50:51
SDLの方が強い
397デフォルトの名無しさん:2006/07/25(火) 22:04:39
じゃぁおれは wxD で
398デフォルトの名無しさん:2006/07/25(火) 22:25:17
じゃあ俺はXlibな
399デフォルトの名無しさん:2006/07/25(火) 23:00:52
WinAPIということで
400デフォルトの名無しさん:2006/07/26(水) 08:33:36
>>392
話はわかるがなあ
2chで役に立つものを期待するのもどうかと思うけどなw
もっと無駄なことしようだぜ
401デフォルトの名無しさん:2006/07/26(水) 14:04:09
>>400
>>394-399の流れはまさにそんな感じだな。
402デフォルトの名無しさん:2006/07/26(水) 17:35:30
>>394はどういう基準でいいと言っているのかわからないから
403デフォルトの名無しさん:2006/07/26(水) 19:00:46
多分、情報を手に入れやすい、設計が優れている、
デファクトスタンダードになりえて覚えなおさなくて済みそうな、
GUIライブラリだと思う。
404デフォルトの名無しさん:2006/07/26(水) 23:33:55
てかいまさらWinの開発なんてVS以外考えられないっしょ。
さっさとLinuxメインになれ
405デフォルトの名無しさん:2006/07/26(水) 23:44:59
wxDがwx系を省みないほど洗練されればこれ一本でいいんだが
406デフォルトの名無しさん:2006/07/26(水) 23:58:21
WinはVisual Studio Expressが無料配布だからそっちつかえってこったな
407デフォルトの名無しさん:2006/07/27(木) 00:28:17
wxD はビルダーがないんだー
408デフォルトの名無しさん:2006/07/27(木) 05:56:51
ビルダーなんか飾りだろ
409デフォルトの名無しさん:2006/07/27(木) 10:17:52
gtkのヘッダ変換してgladeを改造して使えるようにして欲しいなぁ…
410デフォルトの名無しさん:2006/07/30(日) 11:44:18
絶望した。
ファイルを開いたり新規作成したりすらできんD用フォームデザイナに絶望した。

英文化圏オンリー仕様マジダメポ。
411デフォルトの名無しさん:2006/07/30(日) 12:35:55

ところで、signal って扱えないの?
412デフォルトの名無しさん:2006/07/30(日) 12:41:30
>>410

そんなもんに頼らんでもプログラム書けるだろ?
413デフォルトの名無しさん:2006/07/30(日) 15:41:36
>>412
ツールの存在意義って分かってる?
何のためにツールが生み出されるか分からないからそんなこと書いてんの?
それとも単なる宗教論?
414デフォルトの名無しさん:2006/07/30(日) 19:27:03
>>413
書けないらしいw
415デフォルトの名無しさん:2006/07/30(日) 20:45:12
フォームを表示するたった数行のコードを提示するだけで>>414オシマイだねー

import dfl.all;
int main()
{
Form form = new Form;
form.text = "title";
Application.run(form);
return 0;
}
//ビルドコマンドだよ^^
//build main.d dfl.lib -gui -clean -Ttest

次は
「これくらいの規模だったらツールに頼らなくても良かったし、
生APIでもプログラム書けるだろう。お前には無理だろうがな」
とでも言うのかなー?
416デフォルトの名無しさん:2006/07/30(日) 20:52:17
>>410
D弄ってると色んなところで「あー日本語通らねえー」っていう事態に遭遇するよな。
切ない。
417デフォルトの名無しさん:2006/07/30(日) 22:07:11
よく使い捨てツールを作るんだが
すぐぶち当たる日本語ファイル名の扱いのせいで何度も絶望してるお orz

それにしてもなんでだろうな
仕事は辛いものだ辛くないといけないんだと思ってる人が未だにいるのは
簡単にこなされたらアイデンティティーを失うと思うのかなぁ
リアルでも楽な方法を覚えることに拒否反応を示す人いるし・・・
困ったもんだ
418デフォルトの名無しさん:2006/07/30(日) 22:18:42
linuxだと日本語問題にぶつからないので楽。
ただGUIライブラリがないけど。
#せめてversion(Windows)をlinux向けにコンパイルしたphobos+wineのライブラリ+DFLが使えるといいんだけど…
419デフォルトの名無しさん:2006/07/30(日) 22:51:13
>>418
嘘こけ
euc,utf-8の2つだけでもお腹一杯になれるぞ
420デフォルトの名無しさん:2006/07/30(日) 23:18:40
Linuxって日本語のファイル名って滅多につけないから、
そういう意味では日本語問題にぶつからないんじゃね?
421デフォルトの名無しさん:2006/07/31(月) 00:10:11
>>415
なに勘違いしてんの?w
422デフォルトの名無しさん:2006/07/31(月) 00:41:26
>>415
簡単にできることをそんなに誇らしげに話されてもな……
423デフォルトの名無しさん:2006/07/31(月) 01:07:52
WinはVisual Studio Expressが無料配布だからそっちつかえってこったな
424デフォルトの名無しさん:2006/07/31(月) 01:59:23
>>421
お前みたいなカスを遠ざけるためにUNIX界は鉄の掟を敷いている。
二度と来るなよ、基地外。
425デフォルトの名無しさん:2006/07/31(月) 02:03:41
なんかわからんけど原理主義っぽい人がいる気がする
426デフォルトの名無しさん:2006/07/31(月) 02:51:13
UNIX界がどうのって話だと、ツール使うのは軟弱者って空気がある気がするけど。
俺たちはプログラマであって、アプリを使う人じゃないみたいな。

まあ、そんな事はどうでもよくて、ヌルポは3回までだから細心の注意を払うように。
427デフォルトの名無しさん:2006/07/31(月) 07:20:04
>>421-422
どうみても叩いてる論拠が宗教論です。
本当にありがとうございました。
428デフォルトの名無しさん:2006/07/31(月) 08:10:00
【どうみても〜だ】
立てられる仮説が一つしかない自身の貧困な想像力を、極めて遠回しに自嘲した表現。
429デフォルトの名無しさん:2006/07/31(月) 08:14:50
最近は手軽に避諸するライトユーザーが増えてきて困る。
430デフォルトの名無しさん:2006/07/31(月) 08:19:46
こうして人類は何度でも同じ過ちを繰り返すのであった

次のバージョンアップまだー?
今のが1.0ていう話はどうなった
431デフォルトの名無しさん:2006/07/31(月) 09:11:04
>>419
linuxでのeuc-jpなんかはもはや過去互換の存在だし…
まぁ将来的にずっとutf-8とも保証されてないけど。
432デフォルトの名無しさん:2006/07/31(月) 10:36:48
>>428

【どうみても〜だ】

【どうみても〜です。本当にありがとうございました。】

という慣用句とは別物だお
433デフォルトの名無しさん:2006/07/31(月) 10:39:02
>>431

Apache が UTF-8 デフォルトになっていて
ブラウザで開いたときのエンコード誤検出がやたら増えた

結局デフォルト変えて使ってて
なんだかなぁと思う今日この頃

スレ違いスマソ
434デフォルトの名無しさん:2006/07/31(月) 11:02:21
>>432
ピント外れすぎ
435デフォルトの名無しさん:2006/07/31(月) 12:19:38
そもそもの論争とは関係ない所を突いてるし、どちらかと言うとピント外してるのは…
436デフォルトの名無しさん:2006/07/31(月) 21:47:36
~~ってトークンは何を意味するの?
言語仕様→字句のトークン一覧にある(本家のほうも)んだけど
そのトークンの意味を解説してる箇所を見つけられなかった。
437デフォルトの名無しさん:2006/07/31(月) 21:49:11
>>436
予約。
一時実装されたけどすぐ撤回された。
438デフォルトの名無しさん:2006/07/31(月) 21:57:19
>>437
なるほど、トンクス。
439デフォルトの名無しさん:2006/07/31(月) 22:38:25
Match式だったっけ?
正規表現比較というとんでもない演算子。
440デフォルトの名無しさん:2006/08/01(火) 01:35:00
ただの演算子にしては実装内容が高レベル過ぎるとな
441デフォルトの名無しさん:2006/08/01(火) 08:22:07
Perlの=~みたいなもん?
442デフォルトの名無しさん:2006/08/01(火) 20:04:09
Perl並に正規表現が埋め込めるようになったら嬉しい
443デフォルトの名無しさん:2006/08/01(火) 21:17:42
>>436
でも、リファレンスから削除されてないのはエラッタっぽいけどな。
444デフォルトの名無しさん:2006/08/04(金) 08:31:02
#lineが出てきたらエディタとかの行番号ってどう表現したらいいの?
↓こんな感じ?

0001 : int main()
0002 : {
0003 :   int #line 6
0006 :   x;
0005 :   return 0;
0006 : }

Filespecが指定された時の表現方法なんて見当もつかないし、#lineは無視して
普通に4行目としちゃっていいのかな?
445デフォルトの名無しさん:2006/08/04(金) 09:40:59
エディタが気にするようなものじゃないよ。
446デフォルトの名無しさん:2006/08/04(金) 09:50:35
>>444
D言語のマクロとか他の処理系からDへのコンバータとかの出力を処理するときに
コンパイラのエラーメッセージが原始言語の行と一致させるための機構だから
エディタが気にしてもしょうがないよ。
447デフォルトの名無しさん:2006/08/04(金) 10:16:13
Dが使えるIDEってないの?
448デフォルトの名無しさん:2006/08/04(金) 10:56:20
またその話か
449デフォルトの名無しさん:2006/08/04(金) 12:39:30
今となってはもう>>447の疑問って自分で調べりゃ分かる段階まで来てるんだよね。
450デフォルトの名無しさん:2006/08/06(日) 15:33:10
エなんとか
451デフォルトの名無しさん:2006/08/06(日) 17:50:41
え? え、え、エート、え express!


Visiual D 2005 Express Editionか!
最後はやっぱりMSかぁ。
452デフォルトの名無しさん:2006/08/06(日) 19:02:45
「ないの?」って聞かれてんだから正しい解答は「あるよ」じゃね?
453デフォルトの名無しさん:2006/08/06(日) 19:04:23
えー
454デフォルトの名無しさん:2006/08/06(日) 19:59:42
>>452
「いいえ」じゃね?<正しい回答
455デフォルトの名無しさん:2006/08/06(日) 20:07:08
山下大将を見習え
456デフォルトの名無しさん:2006/08/07(月) 01:48:03
OpAssignが無いと柔軟性に欠けるな。

String str;
EvenNumber num;
str.text = "text"; //str = "text" と記述したい
num.value = 10; //num = 10 と記述したい

↑のように基本型の模倣が中途半端になる。
まあ「〜と記述したい」なんてただのエゴだし、そんぐらいしか文句はないけど。
457デフォルトの名無しさん:2006/08/07(月) 02:28:58
でもテンプレート関係で…
クラスと構造体が同じように抜えないことに不満を感じている人はあまりいないのかな?
newしなきゃいけないのとしてはいけないのと。
実は問題にならなかったりするとか…
458デフォルトの名無しさん:2006/08/07(月) 06:36:09
IDEは一応ある
459デフォルトの名無しさん:2006/08/07(月) 10:04:40
>>457
?
構造体が派生できない以外はあまり問題ないんじゃね?
460デフォルトの名無しさん:2006/08/07(月) 20:33:37
>>457
構造体でもnewできるでしょ。
461デフォルトの名無しさん:2006/08/07(月) 21:10:51
一応書いておくと、こういうことをやろうとしていたみたい
でもすまん、考え直したら、何とでも代替手段があるよね

class X(T)
{
T foo;
this()
{
foo = new T;
}
}

void main()
{
new X!(C);
new X!(S); // error
}
462デフォルトの名無しさん:2006/08/08(火) 00:44:11
日増しに言語仕様が腐っていってるな。
463デフォルトの名無しさん:2006/08/08(火) 06:32:29
C++言語からいらない機能を排除してC、Java、C#の良いとこを付け加え
さらにつけたい機能を節操なしに貪欲に付け加えた言語、それがD言語
464デフォルトの名無しさん:2006/08/08(火) 07:52:20
機能がある分には問題ない。
害はほとんどない上、使う/使わないは任意で選べる。

漏れとしてはC++から(漏れにとって)いる機能まで排除したのが問題。
全ての規則に例外があるということをよくわかっている、とか言ってgotoまで実装してるくせに
なんで代入演算子のオーバーロードが外されてるんだ。
465デフォルトの名無しさん:2006/08/08(火) 08:06:06
opAssignだけは欲しい。
466デフォルトの名無しさん:2006/08/08(火) 08:10:31
>>463

よだれが出てきそうです
467デフォルトの名無しさん:2006/08/08(火) 11:49:08
代入には変な仕掛けが無いほうが統一されていてわかりやすくない?
468デフォルトの名無しさん:2006/08/08(火) 12:06:01
>>467
かもしれないと思うときもあるんだよな
469デフォルトの名無しさん:2006/08/08(火) 13:00:54
確か、GCがあるし、クラスのインスタンス変数は参照だしで、
メモリ管理上、代入演算子をオーバーロードしなければならない必要性がないから、らしい。
470デフォルトの名無しさん:2006/08/08(火) 14:41:54
Cでgotoを使っていた場面のほとんどで gotoは不要になります。
しかしDは、全ての規則に例外がある、 ということをよくわかっている現実のプログラマのための現実的な言語です。
もちろんDはgotoに対応しています!
471デフォルトの名無しさん:2006/08/08(火) 16:39:45
gotoは制御構文だしなあ
472デフォルトの名無しさん:2006/08/08(火) 18:15:32
プロパティ名がクラス名または構造体名、共用体名と等しい場合はプロパティを省略できます。
//例
String str;

str = "text";
//str.String = "text"; と等価


('A`)ネタダケドナ
473デフォルトの名無しさん:2006/08/08(火) 19:23:02
>>470
何が言いたいの?
474デフォルトの名無しさん:2006/08/08(火) 19:53:28
>>473
>>470はDにgotoが含まれている理由(の日本語訳)。
gotoがそういう理由で言語仕様に含まれてるんだったら
同じ論理を以ってopAssignが含まれてていいじゃん、とgotoを妬んでる様子。
475デフォルトの名無しさん:2006/08/08(火) 22:49:23
opSliceAssignで妥協すれば?

str[] = "text";

みたいに
476デフォルトの名無しさん:2006/08/08(火) 23:55:31
Get〜 Set〜 :: ->等を使う苦痛、って言えば判る人は判ってくれるかな。

まあこれ以上食い下がっても言語仕様が変わる訳ではないし、
最強のopAssignに代わる合理的な妥協案を探していったほうがよっぽど建設的だな。

str << "text";
477デフォルトの名無しさん:2006/08/09(水) 00:15:50
具体的にどんな用途でopAssignが必要だと思うわけ?
478デフォルトの名無しさん:2006/08/09(水) 07:35:23
>>456の一文で完結してんじゃん。
エゴ。
479デフォルトの名無しさん:2006/08/09(水) 08:15:57
エゴは具体的な理由とは言いがたいな。

具体的にどんな用途でopAssignを使おうと思ってるのか、さぁどうぞ。
480デフォルトの名無しさん:2006/08/09(水) 08:32:29
えっ?
だから>>456で完結してね?
>>456のコメント文の用途で使おうと思ってんじゃ(*´・ω・)(・ω・`*)ネーの?
その用途で使用することをを>>456の言葉を借りてエゴと形容したが。
481デフォルトの名無しさん:2006/08/09(水) 08:38:00
>>479
読めよ。
482デフォルトの名無しさん:2006/08/09(水) 11:00:42
読んだら自説を引っ込めなきゃいけなくなるのに
読むわけないだろ。
483デフォルトの名無しさん:2006/08/09(水) 23:49:04
あれが理由?

仮にopAssignが定義出来たとしてさぁ

class Foo{
Foo opAssign(Foo f);
}

Foo f;
f = new Foo();

は一体どうなるのか考えてみようよ。

C++でもポインタに代入演算子は定義できないのと一緒で、もし定義できたら破綻してしまうだろ。
484デフォルトの名無しさん:2006/08/10(木) 00:04:39
>>483
その場合だけエラーだせばおkじゃね?
485デフォルトの名無しさん:2006/08/10(木) 00:38:37
>>483
> C++でもポインタに代入演算子は定義できないのと一緒で、もし定義できたら破綻してしまうだろ。
Dのクラスの参照はポインタじゃないから、別に破綻しないだろ。

基本型の模倣するって言ってるのに、構造体じゃなくて
クラスを使ってnewさせるのはどんな理由があるんだろう。
486デフォルトの名無しさん:2006/08/10(木) 07:36:28
>>483
それやると未割り当てのfのopAssignが呼ばれてエラーが出るだろうね。
でも何がどう破綻するのか判らん。
具体的にどんな意図で自身のクラスオブジェクトの参照を引数にしたopAssignを定義し
どんな用途で>>483みたいな使い方しようと思ってるのかも判らんし。



class Bar : Foo {}
Foo f = new Bar;
で割り当てはできそうかなーと思ったけど言語仕様上opAssign(Foo f)にマッチしちゃうな。
この手のは>>484の案でおkじゃね?
487デフォルトの名無しさん:2006/08/10(木) 07:38:31
やっぱ美しくないからいらなくね?
488デフォルトの名無しさん:2006/08/10(木) 07:56:57
いらない理由に美しさを持ち出すといる派と理由が等価になって水掛け論になる
489デフォルトの名無しさん:2006/08/10(木) 08:16:31
キャスト演算子のオーバーロードはー?
490デフォルトの名無しさん:2006/08/10(木) 08:21:44
議論だと思っているのは>>488だけだったりしてなw
491デフォルトの名無しさん:2006/08/10(木) 08:27:57
>>490
水掛け論の論は持論でも暴論でも宗教論でもよくね?
なんで議論だと思ってんの?
492デフォルトの名無しさん:2006/08/10(木) 08:56:47
なんか俺の心の琴線に触れる書き込みがあったらしくて、朝っぱらから壊れてたわ。
もし不愉快になってたらごめんな。そんじゃ、会社いってくらー
493デフォルトの名無しさん:2006/08/10(木) 13:30:31
ああ、なるほど、キャスト演算子のオーバーロード使えばいいのか。
明示的に書けるわなぁ。
494デフォルトの名無しさん:2006/08/10(木) 13:53:07
なるほど。
Foo opCast(char[] a){
  Foo f=new Foo;
  f.text=a;
  return f;
}

Foo f=cast(Foo)"test";
ってことか。
>there can be only one opCast per struct or class
だからコンパイルは通らないし、キャストのオーバーロードがFoo opCast(char[] a)では無くvoid opCast(char[] a, out Foo f)と書けないと複数宣言ができないけど。
495デフォルトの名無しさん:2006/08/10(木) 18:55:26
解説見る限りopCastを使って
Foo f=cast(Foo)"test";
って実現できないんじゃね?

Foo opCast() { /* 文字列を格納したFoo型オブジェクトの参照を返す */ }
を文字列リテラルのほうに実装できるんなら話は別だが。
496デフォルトの名無しさん:2006/08/10(木) 22:44:22
Dの配列はなんか嫌い。
497デフォルトの名無しさん:2006/08/10(木) 23:10:34
プロファイラとIDE用の参照リストはまだですか?
498デフォルトの名無しさん:2006/08/11(金) 11:06:57
プロファイラって-profileでコードに埋め込まれる性能見積もり用のやつ?
499デフォルトの名無しさん:2006/08/11(金) 14:32:03
500497:2006/08/12(土) 01:38:43
たぶんそれです。
サイトの更新されてるの知らなかったorz
後は自動補完に使える参照リストですね。
501デフォルトの名無しさん:2006/08/12(土) 07:35:45
D 0.164
502デフォルトの名無しさん:2006/08/12(土) 08:40:34

D 1.001 じゃなかったのか・・・。
503デフォルトの名無しさん:2006/08/12(土) 08:42:46
>502
追加機能はddocだけだからいいじゃない
504デフォルトの名無しさん:2006/08/12(土) 22:02:51
C++と比較すると速度的にだいぶ落ちる?
505デフォルトの名無しさん:2006/08/12(土) 22:13:20
>>504
Cと比べてC++が遅くなるのと同程度にDもC++と比べて遅くなる。
506デフォルトの名無しさん:2006/08/12(土) 22:17:35
配列周りが遅いだけ。
507デフォルトの名無しさん:2006/08/12(土) 23:19:10
>>504
仕様かためとバグ潰しに奔走している言語に何を期待してるの?
508デフォルトの名無しさん:2006/08/13(日) 02:22:23
509デフォルトの名無しさん:2006/08/13(日) 03:10:39
動的配列の管理GCに丸投げしてると物凄く遅くなったけど、こまめにdeleteしてたら
C++(dmc+stlport5.1)でstd::vector使って同じ処理させたときと比較して5倍くらい速くなりました。
メモリの管理はGCに任せろ!って言葉信じてたせいでD駄目じゃんって思いかけてましたよ・・・

ところでDで作ったアプリケーションが2バイト文字を引数として取ってくれる時と
くれない時があるのでおかしいなと思ってたんですが、理由をご存知の方いません?

module argtest;
import std.c.stdio;
int main(char[][] args) {
foreach( index, argv; args ) {
printf("args[%d] = %.*s\n",index,argv);
}
return 0;
}

結果:
>argtest あ a aあ あ
args[0] = (実行ファイルのパス)
args[1] = a
args[2] = aあ
args[3] = あ

//なぜか1番目の引数がなかったことにされている。
//3番4番は全角文字交じり/全角文字のみなのに正常に認識されているので
//全角文字を認識できていないわけではなさそう。

dmcでも全角文字が混じってると認識しなかったりするんですよね。
510デフォルトの名無しさん:2006/08/13(日) 03:31:08
過去ログくらい読めよ
511デフォルトの名無しさん:2006/08/13(日) 08:50:16
>>509
配列の要素をコピーして使い終わったら捨てて、って使い方してない?
以前配列処理でそんな使い方してたら極端に速度が落ちたけど
スライス使って参照で処理するような実装に変えたら問題解決した。
512511:2006/08/13(日) 09:09:31
511文章が言葉足らずだった。

ループ処理とかで巨大な配列の一部をコピーして動的配列に代入、使い終わったらその動的配列の内容を捨てる。

これがめちゃくちゃ速度落ちた。

ループ処理とかで巨大な配列の一部の参照をスライス使って動的配列に代入、使い終わったらその動的配列の内容を捨てる。

問題解決した。

こう言いたかった。
513デフォルトの名無しさん:2006/08/13(日) 09:25:23
>>510
どのくらい過去でしょうか。Part8から興味を持っての参加でしたが、
「英語圏しか想定していないものは駄目だ」みたいな話を見かけた印象しかなくて。
日々仕様が変わるようなのであまり古い情報参照してもしょうがないかもと思って
Part7以前のスレは追いかけてません。申し訳ない。

コマンドラインシェル自体がUTF-8に対応してないから出来なくて当然なのかなとは思ってましたけど、
dmcで-Bj -j0つけても同じ結果になったので、そもそもDigitalMars製品自体、全角文字コードの使用が想定外と考えて
引数に全角文字を与えないようにして問題を回避しています。

>>511
8MBのファイルから要素を読み込んで配列に格納して色々と処理をし、終わったらdeleteせずに次のファイルを・・・
という感じでどんどんメモリを消費する形にしていたんですが、2ファイル目以降の処理が
同じことさせてる割にはやけに遅くなっていたもので変だなあと。

ログ読んでたら「巨大なメモリを確保したら明示的にdeleteすべき」と書かれていたので試したら、
やけに動作が軽くなったので驚きました。
514デフォルトの名無しさん:2006/08/13(日) 10:19:11
>>513
linux(utf-8)+dmd/gdmdだと問題なし。
もしecu-jpのlinuxでも起きないとしたらdmcのバグかもね。
コマンドプロンプトをchcp 65001にするとかnkfとか通してutf-8に変換するとかしてみたらもしかしたら大丈夫かもしれない。
515デフォルトの名無しさん:2006/08/13(日) 10:24:39
>>513
Part8の>>50-100辺りを眺めるとこの話題が出てくる。
これなんかオススメ

argtest "あ" "a" "aあ" "あ"
516デフォルトの名無しさん:2006/08/13(日) 10:36:01
自分の場合Unicodeで逃げてみた。

extern(C)extern{
    int _argc;
    wchar**_wargv;
    char *setlocale(int category, char *locale);
}
extern(C)int main(int argc,char**argv);
extern(C)int wmain(int argc,wchar**argv){return main(0,null);}
void main(){
    setlocale(0,"");
    foreach(ws;_wargv[0.._argc])
        printf("%S\n",ws);
}
こんぱいらおぷしょんに -L/EXET:NT/ENTRY:wmainCRTStartup を指定すること
517509=513:2006/08/13(日) 11:08:26
>>514
あああすいません、なんか当然のようにwindows環境前提で書いてました。
chcp 65001は試したことあるんですが、それだと今度はprintfの出力すら表示されなくなったので
打つ手なしかなあとあきらめておりました。

>>515
思いっきり既出だったんですね。流し読みしてて見落としてましたorz ゴメンナサイ

引数をダブルクォートで囲むと空白文字だけが無視されると思っていましたが、
実際は囲った文字列が未加工で渡されるということでしょうか。
ひとつ賢くなれました。ありがとうございます。

>>516
こういう方法もあるんですね。今自分の使用している環境以外はあまり考えたことがなかったもので、
ロケールの話が出てくると途端にやり方がわからなくなってしまいますorz


解決のためのいろいろなアプローチがあることがわかってかなりの収穫になりました。ありがとうございました。
518デフォルトの名無しさん:2006/08/14(月) 00:53:57
DってBCCとかのTLIBで出来たlibをリンク出来る?
一応phobos.libとかってあるけど、それとは同種のやつなのかわかんなくって。

BCCでも使えるライブラリで便利なのっていっぱいあるから使えたら素敵。
519デフォルトの名無しさん:2006/08/14(月) 12:06:16
520デフォルトの名無しさん:2006/08/14(月) 12:14:57
補完もできないIDEなんて
521デフォルトの名無しさん:2006/08/14(月) 12:23:18
>>519
コンパイラの設定が分からなくてD applicationのプロジェクトが作成できない…
522デフォルトの名無しさん:2006/08/14(月) 12:26:01
結局GUIライブラリはどれがいいのよ?
523デフォルトの名無しさん:2006/08/14(月) 12:33:27
本家にはD言語対応なんて一言も書かれてないけどな
http://www.codeblocks.org/features.shtml
524521:2006/08/14(月) 12:34:54
Linux上だとサポートされてないのか
[ Patch #956 ] Turned on DMD and GDC support under Linux
https://developer.berlios.de/patch/?func=detailpatch&patch_id=956&group_id=5358
525デフォルトの名無しさん:2006/08/14(月) 12:55:14
結局コード補完が出来るIDEはまだないのか。
526デフォルトの名無しさん:2006/08/14(月) 13:13:36
またIDE厨がわらわらと湧いてきたよ。
うぜぇー
527デフォルトの名無しさん:2006/08/14(月) 13:36:15
>>518
使えることは使えるけど細部で異なるから、(BCC付属のやつを)そのまま使うのは実質無理だと思ったほうがいいかも?
あれが未定義これが未定義ってエラーばかりでリンク成功したことがあんまりないす。
dm製品が吐いたobjをTLIBでまとめたファイルなら問題なくつかえます。
528デフォルトの名無しさん:2006/08/14(月) 15:05:24
>>526
VCのせいでIDEに幻想を持っている奴が多いからなしかたない
529デフォルトの名無しさん:2006/08/14(月) 15:08:06
VCは幻想ではなく現実の製品ですが。
良いか悪いかは別としてな
530デフォルトの名無しさん:2006/08/14(月) 18:06:48
実際Visual Studioは最強のIDEだとは思うよ
531デフォルトの名無しさん:2006/08/14(月) 18:30:53
そんな言い方するな
「最強のIDEの一つ」くらいにしとけ
532デフォルトの名無しさん:2006/08/14(月) 20:07:33
でもなあ・・・
VSは最強のIDEに一票
# 「最も〜の一つ」という日本語は逃げてるから嫌い(^^;
533デフォルトの名無しさん:2006/08/14(月) 20:40:56
>>532
アタマ ダイジョウブ?
534デフォルトの名無しさん:2006/08/14(月) 21:05:16
>>532
「に、一票」の部分に「飽くまで俺一人の意見だけどさ」という逃げを感じる。
535デフォルトの名無しさん:2006/08/14(月) 22:13:19
そうか?
536デフォルトの名無しさん:2006/08/14(月) 22:44:27
どうせなら「VSは最強のIDE。異論は認めん」くらいの厨っぷりをだな


発揮されても困るが
537デフォルトの名無しさん:2006/08/14(月) 22:58:58
名前付き列挙体型の変数の値が列挙子のいずれかの値と等しいか否かを判定したいんだけど、
楽に判定できる方法ってDで用意されてる?
今のところメンバ総当りしか方法ないっぽい?

enum Hoge
{
   Ioge = 1,
   Joge = 7,
   Koge = 100,
   //...
   Zoge = 4649,
}

bool isHogeMemberValue(Hoge hogeValue)
{
   bool result;
   switch (hogeValue){
      //総当り比較?
      default:
         result = false;
         break;
   }
   return result;
}
538デフォルトの名無しさん:2006/08/14(月) 23:27:56
>>537
Mapに処理関数オブジェクトつっこんで呼び出すとかの方がいいんじゃないの?
539デフォルトの名無しさん:2006/08/14(月) 23:57:35
>>538
トンクス。
確かにそれだと後々判定も一発で出来るしそっちの方がいいかもね。
(配列リテラル実装されてコンパイル時に登録できれば尚更)
540デフォルトの名無しさん:2006/08/15(火) 16:45:02
"Hello world"サンプルからしてコンパイルこけたりするのは第一印象最悪
stdoutキーワードがわからないって何よ
小1時間調べ回ってstdin/out/err非推奨→廃止されてたって書いてあったから
とりあえずimport std.stdio;とprintfで逃げたよ

いくらなんでも廃止までするこたーないだろっての


ところでWinXPなんだけどコンパイルしたexeが非ASCII文字化けさせない設定ある?>ALL
541デフォルトの名無しさん:2006/08/15(火) 16:59:42
>540
上段については、import std.cstream;してdin/dout/derr使っとけ
542デフォルトの名無しさん:2006/08/15(火) 17:03:09
今のサンプル通らないのかw
それは困ったもんだなあ
543デフォルトの名無しさん:2006/08/15(火) 17:14:23
>>540
toMBSzでSJISに変換してからコンソールに出力。
544デフォルトの名無しさん:2006/08/15(火) 17:19:09
>>540
writef使っとけ
545デフォルトの名無しさん:2006/08/15(火) 17:58:13
その辺の入門記事書いてどっかアップしようと思ってた過去の俺を思い出した。
D Memoが新しくなれば一番良いんだろうけども。

他人に配るんなら使えないが自分でテストする分にはコンソールでchcp 65001か実行結果取り込んでくれるエディタも吉。
546デフォルトの名無しさん:2006/08/15(火) 20:16:48
>>527
d。dmcからD対応のlibとか作ってみる。
547デフォルトの名無しさん:2006/08/17(木) 12:05:54
日本語訳者復活記念カキコ!
ガンガレ
548デフォルトの名無しさん:2006/08/17(木) 12:19:49
2006/08/17 の翻訳状況

* 0.164 対応作業中
o 作業場所... なかなか進まん
549デフォルトの名無しさん:2006/08/17(木) 20:58:36
昨日、人生で初めて逆ナンされた。
彼女はおれがアニヲタって言っても全然気にしないって言ってくれた。
なんかすごく優しくて可愛くていい子だった。
絵を売る仕事をしているらしく、男気を見せるために思い切ってラッセンの絵を買った。
今飾ってるけどマジでかっこいい。
47万円の価値は十分にあると思う。
550デフォルトの名無しさん:2006/08/17(木) 21:12:36
poseidon0.21がリリースされてからちょうど放置4ヶ月目か。
551デフォルトの名無しさん:2006/08/18(金) 23:24:04
WIN32API直接呼べるのにDWT(JAVAのSWT移植)の意味は?
552デフォルトの名無しさん:2006/08/18(金) 23:26:08
クール
553デフォルトの名無しさん:2006/08/19(土) 00:19:06
>>551
藻前頭悪いだろ
藻前頭悪いだろ
554デフォルトの名無しさん:2006/08/20(日) 19:44:20
Dのhello worldプログラムでも100kb以上するのってもしかして定数をメモリに確保してるから?
それともDの機能によるもの?
555デフォルトの名無しさん:2006/08/20(日) 21:28:58
(writefでもprintfでも100k超えないけどなぁ…)
実行ファイルにGCやらD標準ライブラリやら例外時の文字列やらくっ付いててでかいんだと思う。
crtdll.dllみたく共通部分を別ライブラリに分ければ実行ファイルは小さくできるけど
漏れは単体実行派だから実行ファイルのサイズには目を瞑ってる。
Dのプログラムを実行するにはDランタイムライブラリが必要です、なんてまっぴらゴメンだ、
556デフォルトの名無しさん:2006/08/20(日) 22:01:53
>>550
DWTも放置されているしな。
Dのライブラリは放置されまくりんぐで、開発者にも逃げられる始末。
557デフォルトの名無しさん:2006/08/20(日) 23:01:46
DってRTTIみたなのってある?
558デフォルトの名無しさん:2006/08/20(日) 23:16:00
ありますが、リフレクションがない。
559デフォルトの名無しさん:2006/08/20(日) 23:23:05
D言語でリフレクションだそうな
http://d.hatena.ne.jp/shinichiro_h/20040803
560デフォルトの名無しさん:2006/08/21(月) 12:46:50
dmd0.165リリース
561デフォルトの名無しさん:2006/08/21(月) 12:52:42
D 0.165
Aug 20, 2006
New/Changed Features

* Added implicit conversion of expressions to delegates.
562デフォルトの名無しさん:2006/08/21(月) 12:56:25
また省略構文を追加か…
563デフォルトの名無しさん:2006/08/21(月) 13:04:04
言語仕様でリフレクションをサポートしてくれないのかな
564デフォルトの名無しさん:2006/08/21(月) 13:24:39
{return func("test");}をfunc("test")と書けるようになったと。

void delegate() func(){return (ry;}
void test(void delegate() delegate() a){a()();}
test(func());
でもうまくいく?
565564:2006/08/21(月) 13:47:18
うまくいってないな…。
#にしてもこんなキャスト使うのかねぇ…?
#char[] delegate() tmp=cast(char[] delegate())"test";
#writefln(tmp());
566デフォルトの名無しさん:2006/08/21(月) 15:42:49
すごく・・・わかりにくいです・・・
567デフォルトの名無しさん:2006/08/21(月) 15:43:33
余計ややこしい様な・・・
568デフォルトの名無しさん:2006/08/21(月) 18:59:13
なんかこれ見てすげーなとおもた
ttp://www.digitalmars.com/d/lazy-evaluation.html

bool scase(bool b, void delegate() dg)
{
    if (b)
    {   dg();
    return true;
    }
    return false;
}

void cond(bool delegate()[] cases ...)
{
    foreach (c; cases)
    {   if (c())
        break;
    }
}

void foo()
{
    int v = 2;
    cond
    (
    scase(v == 1, writefln("it is 1")),
    scase(v == 2, writefln("it is 2")),
    scase(v == 3, writefln("it is 3")),
    scase(true,   writefln("it is the default"))
    );
}
569デフォルトの名無しさん:2006/08/21(月) 18:59:42
こういうことなんじゃないかと。

import std.string;

alias int delegate() LazyInt;
int tarai(LazyInt x, LazyInt y, LazyInt z){
 if(x() <= y()){
  return y();
 }else{
  return tarai(tarai(x()-1,y,z),
       tarai(y()-1,z,x),
       tarai(z()-1,x,y));
 }
}

void main(char[][] args){
 printf("%ld\n", tarai(500,250,0));
}
570デフォルトの名無しさん:2006/08/21(月) 19:32:13
要するに、遅延評価をdelegateを使ってやるため、シンプルに見えるような構文をつくったよん、ということだよね。
571デフォルトの名無しさん:2006/08/21(月) 19:34:07
ちなみに、Walterタソ

I was going to call this 1.0 RC1, but I just could not resist adding the
lazy expression evaluation. This adds one of the big capabilities of
common lisp.

とか言ってるよ。
572デフォルトの名無しさん:2006/08/21(月) 19:37:33
前にも似たようなことをいってたような。

しかし0.165の変更はいらんなあ
余計にややこしいような・・
同じことを色々と書けるってのはあまり好きじゃない
573デフォルトの名無しさん:2006/08/21(月) 19:43:13
>>572
TMTOWTDI
574デフォルトの名無しさん:2006/08/21(月) 19:51:31
出たな妖怪たらいまわし
575デフォルトの名無しさん:2006/08/21(月) 19:55:18
うーん
関数を書いた場所が delegate で受け取られる場所かどうか
知っていないといつ実行されるのかわからなくなるなあ
人の書いたコードを読むときにちょっと混乱しそう
遅延評価は面白いんだけどなあ
576デフォルトの名無しさん:2006/08/21(月) 19:56:34
あらゆる式は、voidあるいは式の型を返すdelegateに暗黙的に変換できる。
ということらしいけど。
577デフォルトの名無しさん:2006/08/21(月) 20:01:38
それなんて関数型言語?
578デフォルトの名無しさん:2006/08/21(月) 22:07:39
>569だが、
void main(char[][] args){
 if(args.length == 4){
  printf("%d\n",
      tarai(atoi(args[1]),
      atoi(args[2]),
      atoi(args[3]))
      );
 }
}
とやって引数渡して実行したらArrayBoundsErrorだったんだけど、
なにが原因なんだろう。
579デフォルトの名無しさん:2006/08/21(月) 22:20:26
直感だけどatoiにchar*でなくてchar[]渡してるのはまずくね?
580デフォルトの名無しさん:2006/08/21(月) 22:36:35
toIntとかなかったっけ?
581デフォルトの名無しさん:2006/08/21(月) 22:39:05
std.conv
582デフォルトの名無しさん:2006/08/21(月) 22:49:29
struct do_{
    void delegate()[]dgs;
    static do_ opIndex(void delegate()[]dgs...){
        do_ x;x.dgs = dgs;return x;
    }
    void while_(bool delegate()pred){
        do foreach(x;dgs)x();while(pred())
    }
}
void main(char[][]args){
    int x = args.length;
    do_[
        printf("Hello "),
        printf("World!"),
        printf("\n")
    ].while_(x-- != 0);
}
やべぇ、書いてみたけど何の役にも立たねぇw
583デフォルトの名無しさん:2006/08/21(月) 22:52:26
ほー、面白い。いい方向性に向かってるなぁ。
584デフォルトの名無しさん:2006/08/21(月) 23:06:55
>>575
これもそうだしout/inout引数もそうなんだよなあ。
 >○○で受け取られる場所かどうか知っていないと混乱しそう
なんとかならんかな。
585デフォルトの名無しさん:2006/08/21(月) 23:21:20
>>579
std.stringのatoiは long atoi(char[])だから大丈夫。
念のため toStringz(args[1]) とやってみたけど型不一致。
cast(int)atoi もためしたが無意味。

 int x = atoi(args[1]);
 int y = atoi(args[2]);
 int z = atoi(args[3]);
 printf("%d\n", tarai(x,y,z));
なら動くので、atoiの扱いには問題ないと思うんだよ。

>>584
importするんだから、知ることができないって状況はないから
問題ないんじゃないかな。
単に、引数の型を知ってるか否かという話でしょ。
586デフォルトの名無しさん:2006/08/21(月) 23:30:33
ま、新機能が加わったばかりだから多少バギーでも仕方が無いでしょ。
2,3バージョン程度、上がると安定してくるからそれまでは我慢我慢
587デフォルトの名無しさん:2006/08/21(月) 23:39:44
とりあえず、これで実行時エラーが出た。

int delegate() f(int delegate() z){ 
     return z();
}
void main(char[][] args){
    f(0)();
}
588587:2006/08/21(月) 23:41:53
って、これは普通にアウトだな。
スマン、忘れてくれ。
589デフォルトの名無しさん:2006/08/22(火) 01:01:19
>>585
変数受けしたら動くってのは、バグっぽいね。

tarai({return x;}, {return y;}, {return z;});

はおkで、

tarai({return atoi(args[1]);}, {return atoi(args[2]);}, {return atoi(args[3]);});

がダメってことみたいだから。
590デフォルトの名無しさん:2006/08/22(火) 01:03:28
>>585
知ることが出来ないわけじゃないんだけどさ

import std.cstream;

void foo(void delegate() f)
{
 f();
 dout.writefln("foo");
}

void bar()
{
 dout.writefln("bar");
}

void main()
{
 foo( { bar(); } ); // これは delegate に見える
 foo( bar() ); // そうは見えない
}

出力はどちらも普通とは逆順で
bar
foo

# ところで foo( bar() ); の行でエラーが出るんですけどバグですか?それならいいんですけど
591デフォルトの名無しさん:2006/08/22(火) 01:06:18
すまん言いたいことは伝わるかもしれんが foo はこうだった orz
そうじゃないと逆順にならないし

void foo(void delegate() f)
{
 dout.writefln("foo");
 f();
}
592デフォルトの名無しさん:2006/08/22(火) 01:40:17
うーん、上のやつはバグじゃなくて普通に使い方を
間違っているような気がしてきましたが・・・
言いたいことは評価される順番が普通通りに行かないことがあるなあと
593デフォルトの名無しさん:2006/08/22(火) 01:50:09
Haskellのせいで言語が汚染されていく
594デフォルトの名無しさん:2006/08/22(火) 02:27:07
>>592
一応、式ならなんでもdelegateにしてくれるはずだから
バグでいいんじゃないかと。
595デフォルトの名無しさん:2006/08/22(火) 11:39:07
call/ccまだー
596デフォルトの名無しさん:2006/08/22(火) 14:20:19
この言語拡張ってどんな時に役立つんですか?
たらいまわしみたいに、遅延評価を自然に記述したいとき?
って、いまいち頻繁にあるのかわからない。
ifとかみたいな制御構造を作れるってこと?
597デフォルトの名無しさん:2006/08/22(火) 15:21:21
>たらいまわしみたいに、遅延評価を自然に記述したいとき?
違う
>ifとかみたいな制御構造を作れるってこと?
そう
598デフォルトの名無しさん:2006/08/22(火) 18:04:10
D始めたばかりです。

class Hoge
{
public:
void hoge(){}
}
void main(char[][] args)
{
Hoge hoge;
hoge.hoge();
}

このコードをビルド(オプションなし)するとAccess Violationと出て実行時エラーになるのですが、原因の検討がつきません。
おそらく初心者ミスだと思うのですが、原因をご教示ください。
599デフォルトの名無しさん:2006/08/22(火) 18:05:34
>>598
Hoge hoge=new Hoge;
600デフォルトの名無しさん:2006/08/22(火) 18:37:45
>>599
ありがとうございました。
旧来のCというかRAIIを実現するには、
auto Hoge hoge = new Hoge;
でいいんでしょうか。
601デフォルトの名無しさん:2006/08/22(火) 19:15:37
ついでにもうひとつ。自分で定義したモジュールをimportするとうまく動きません。

class Hoge{}
void main(char[][] args){Hoge hoge = new Hoge;}
// ok

module foo.bar
class Hoge{}

import foo.bar
void main(char[][] args){Hoge hoge = new Hoge;}
// hoge.exeはwin32有効なアプリケーションではありません

コマンドラインでもいいのに……
602デフォルトの名無しさん:2006/08/22(火) 20:04:07
foo.barの方をコンパイルやリンクしてないってオチだと予想
603デフォルトの名無しさん:2006/08/22(火) 22:46:22
importするのはシンボルだけ。
実装コードを含むには>>602
604デフォルトの名無しさん:2006/08/22(火) 22:50:01
Wikiにあるとおり0.162からwin32.windowsが使えなくなってるけどみんなどう対処してる?
605デフォルトの名無しさん:2006/08/23(水) 07:47:42
最も合理的な対処方法は本家報告だと思うんだ。
606デフォルトの名無しさん:2006/08/23(水) 08:40:21
wikiにあるのは多分本家のwindows.dの話じゃないと思ってたが。
あれ、本家の奴も動かないのかな?
607デフォルトの名無しさん:2006/08/23(水) 10:48:53
本家のが中途半端だからwin32.windowsなんじゃなかった?
でもwin32.windowsを自分で適用しようとしてもスクリプトが動かない理由がまだわからないや
608デフォルトの名無しさん:2006/08/23(水) 11:09:16
日本語訳更新乙
609デフォルトの名無しさん:2006/08/23(水) 11:12:33
まだバグがあるのは気にしないのだが↓のコードおもろいことになるな

import std.cstream;

void dotimes(int n, void delegate() exp)
{
 for (int i = 0; i < n; ++i)
 {
  exp();
 }
}

void main()
{
 dotimes( 10, dout.writefln("Hoge"));
}
610デフォルトの名無しさん:2006/08/23(水) 11:28:43
ちなみにこんなん

[char[]]Hoge
[char[]]Hoge
[char[]]Hoge
[char[]]Hoge
[char[]]Hoge
[char[]]Hoge
[char[]]Hoge
[char[]]Hoge
[char[]]Hoge
[char[]]Hoge
611デフォルトの名無しさん:2006/08/23(水) 11:36:09
>>602-603
ありがとうございました。
foo.barにobjがありませんでした……
今度はリンカでエラーが出たので自力でやってみます。
612デフォルトの名無しさん:2006/08/23(水) 12:35:14
>>608
ホントに最新版まで追いついてるし

更新お疲れ様でした
613デフォルトの名無しさん:2006/08/23(水) 18:52:55
delegateを周りを強化して遅延評価できるようにしても、
delegateを関数の外に持ち出せないのでは
いまいち迫力に欠ける
614デフォルトの名無しさん:2006/08/23(水) 20:22:05
>>613
同感。多少効率が悪くなってもいいから環境も束縛してほしい。
615デフォルトの名無しさん:2006/08/23(水) 20:58:52
>>614
明らかに「多少」で済むわけが無い
616デフォルトの名無しさん:2006/08/23(水) 21:12:35
これが
int delegate()inc(int n){
    struct inc{int n;int get(){
    return n++;
    }}
    auto p=new inc;p.n=n;return &p.get;
}
こう書けるようになるのだから、
その程度の速度の低下は許容してもいいじゃまいか。
int delegate()inc(int n){
    return n++;
}
617デフォルトの名無しさん:2006/08/23(水) 21:32:16
もう関数のフレームをスタックで管理するのやめればいいんだよ。
618デフォルトの名無しさん:2006/08/23(水) 21:41:04
>>616
その程度ってどの程度だ馬鹿。
619616:2006/08/23(水) 21:48:01
>>618
環境を束縛するなら下の式は上の式と同程度のコストになる位だな。
620デフォルトの名無しさん:2006/08/23(水) 21:49:33
いっそ全部C関数にしてランタイムつくってクラスに見せかけたらどうだ?
621デフォルトの名無しさん:2006/08/23(水) 21:51:28
>>619
お前アホだろ
622デフォルトの名無しさん:2006/08/23(水) 21:56:53
>>621
ま、それは否定しないよ。実際、俺は頭は良いほうじゃないしな。

俺としては俺がアホかよりもdelegateを関数外に持ち出せるかのほうが遥かに重要だけどな。
もう、関数の引数を逃がすためだけに構造体を使うのに疲れたんだよ。
623デフォルトの名無しさん:2006/08/23(水) 22:04:31
>>616
すいませんが挙動を説明してもらえませんか
ともっとアホな俺が登場
624623:2006/08/23(水) 22:08:03
なんでこういうコードが必要になるんでせうか?
625デフォルトの名無しさん:2006/08/23(水) 22:24:20
bool delegate(T) less(T)(T b){
  return (T a){return a<b;};
}
T *find_if(T,Pred)(T[]a,Pred p){
    foreach(inout v;a)if(p(v))return &v;
    return null;
}
void main(){
    const int[]s=[2,3,5,6,3,2,1];
    printf("%d",*find_if("Hello World"[],less(2)));
}
>>624
引数の一部を束縛したいときとか内部的に状態を持ちたいことって結構多いよ。
626デフォルトの名無しさん:2006/08/23(水) 22:26:13
スマン "Hello World"[] → s な orz
627デフォルトの名無しさん:2006/08/23(水) 22:36:11
こんなんも欲しくなる典型例だな。
Result delegate(A1)
bind2nd(Result,A1,A2,R2)(Result delegate(A1,A2)dg,R2 a2)
{
    return (A1 a1){return dg(a1,a2);};
}
628デフォルトの名無しさん:2006/08/23(水) 23:05:18
うはw
ちょっと時間かけないと理解できないなんてショックww

えーっと less は C++ での関数オブジェクトの代わりに delegate を返す関数で・・・
あとさらにここで第2引数を束縛してて・・・

find_if は 引数1つの delegate を受け取って配列の要素に delegate を適用する関数で・・・
なんかわかってきたけど

引数を inout で受け取る関数や delegate じゃ代用できないの?
ほんとよくわかってなくて申し訳ないのだけど
629デフォルトの名無しさん:2006/08/23(水) 23:13:40
>>628
別に無理じゃないとは思うけど、綺麗に書けるかは別問題。
他にもD言語の遅延評価にキャッシュを付ける関数とかも簡単にかけたり。

T delegate()lazy(T)(T delegate()dg){
    T val;
    return {
        if(dg)val = dg(),dg  = dg.init;
        return val;
    };
}
630デフォルトの名無しさん:2006/08/23(水) 23:16:58
同じ結果を得るのなら、他にいくらでも方法があるんで、「俺はこう書きたいんだー」という以上の意味はあんまり無いです。
できないよりできたほうが、なんかカックイイって感じますけど。
631デフォルトの名無しさん:2006/08/23(水) 23:18:29
>>628
関数型言語やったこと無ければSchemeあたりをかじってみるのをおすすめする。
632デフォルトの名無しさん:2006/08/23(水) 23:23:05
やっぱHaskelとかSchemeとかやってみないとこの辺りはダメかね
ありがd

上のコードはちょっと勉強してみまつ
633デフォルトの名無しさん:2006/08/24(木) 14:15:21
名前マングリングをやりたいんだけど自力でやらなきゃ駄目?
634デフォルトの名無しさん:2006/08/24(木) 15:54:12
>>616とか>>629とか、どこかで見た覚えがあるんだけどな
思い出せない
635デフォルトの名無しさん:2006/08/24(木) 15:56:23
636デフォルトの名無しさん:2006/08/24(木) 18:38:34
ここまでくると、ちょっと節操のないマルチパラダイム言語だな。
おもしろいけどw
637デフォルトの名無しさん:2006/08/24(木) 22:12:30
コンパイル早くて関数の宣言要らない程度で十分な俺は吊ってきます。
638デフォルトの名無しさん:2006/08/24(木) 22:25:14
コンパイル速いだけでもどんぶり三倍はくえる
639デフォルトの名無しさん:2006/08/25(金) 00:11:01
>>635
画期的だけど、ちょっと無理すると落ちるな。
構造体を使った奴の方が、めんどくさいけど安定して使える感じがする。
640デフォルトの名無しさん:2006/08/25(金) 01:10:19
>>635 のやつ、
delegate はスタックフレームへのポインタと関数ポインタからなっていて、
*dg がスタックフレームへのポインタであることは分かったんだが、
sp が何を指しているのかよく分からん…。
641デフォルトの名無しさん:2006/08/25(金) 01:31:37
>>639
そりゃまあ。一方はillegalで構造体使うのは完璧に正しいコードなんだし。
でも"無理して落ちる"って例ってどんなのがある?
ちょっと考えた範囲では思いつかなかった…。

>>640
closure関数のスタックフレーム(変数xを含む) <= sp == &x
----
delegateリテラルのある関数のスタックフレーム
---- <= *dg
delegateリテラルのある関数の引数とかreturn addressとか

というスタック構造ぽいので、とりあえず大雑把に sp から *dg+α まで
切り出しとけば足りるだろ的な考え。
642デフォルトの名無しさん:2006/08/25(金) 02:24:46
>>633
型名だけなら .mangleof。関数名とかごとやりたいと思ったら自力かな。
643639:2006/08/25(金) 03:11:27
>>641
遅延リストを作って遊んでいて、その生成関数が
LazyList creat(int n, int delegate(int) dg){
 return new LazyList(n, closure({
  return creat(dg(n), dg);
 }));
}
というふうになるんだけど、これをリリースビルドして実行すると落ちる。
デバッグビルドだと大丈夫。
詳しく調べてないんであれだけど、createが再帰的になっているのがいけないのかなと思う。

調子に乗ってHaskellの
fib = 0 : 1 : zipWith (+) fib (tail fib)
を移植して
LazyList fib(){
 return LazyList(0, closure({
  return LazyList(1, closure({
   return zipWith(fib2(), fib2().next(), (int n, int m){return n + m;});
  }));
 }));
}
とかすると、デバッグビルドでも無理。
でも構造体を使ってクロージャを作ると、fibもうまくいく。
644639:2006/08/25(金) 03:33:26
LazyList fib(){
 return LazyList(0, closure({
  return LazyList(1, closure({
   return zipWith((int n, int m){return n + m;}, fib(), fib().next());
  }));
 }));
}
だった。訂正します。
645641:2006/08/25(金) 03:51:36
なるほど。ありがd。

てきとーに
class LazyList {
 int head; LazyList delegate() next;
 this(int n, LazyList delegate() d) { head = n; next = d; }
}
LazyList zipWith(int delegate(int,int) f, LazyList a, LazyList b) {
 return new LazyList( f(a.head, b.head),
  closure({return zipWith(f, a.next(), b.next());}) );
}
で実験してみたら、fib()の方はclosureのデリゲート書き換えの行を
if(*dg) *dg = (ry
にしたら通った。環境を持ってく必要がない場合はdg[0]にぬるぽが入るっぽい。

creat()のは再現できなかった。もーちょい調べてみるわ。
646640:2006/08/25(金) 12:04:05
>>641
よく分かった。thx.
647デフォルトの名無しさん:2006/08/25(金) 12:55:23
void Foo(char[] str){}
void Foo(wchar[] str){}
void Foo(dchar[] str){}

void main()
{
   //postfixを使わないと曖昧エラー
   Foo("text");
}

だったのが

void Foo(char[] str){}
void Foo(wchar[] delegate() str){}
void Foo(dchar[] delegate() str){}

void main()
{
   //postfixを使わないとFoo(char[] str)が呼ばれる
   Foo("text");

   //Foo(wchar[] delegate() str)が呼ばれる
   Foo("text"w);
}

みたいにできて便利
648デフォルトの名無しさん:2006/08/25(金) 14:22:57
>>647
その曖昧エラーは正直かなりどうにかして欲しい部分ではある。
自分で作る部分に関してはそういう事も出来るか。
649639:2006/08/25(金) 21:55:05
>>645
スタックフレームに関しては、なんとなくしか理解できてないけど、とりあえず
>if(*dg) *dg = (ry
としたら、うまくいった。
creat()のは、別のところにミスがあって直したら動くようになった。

LazyListを構造体で実装して、最適化付きでビルドするとうまくいかなかったりとか、
プログラムによっては正しくない計算結果が出てきたりとか、不安定なところはまだあるけど、
それよりも結構メモリを食うことの方がちょっと気になる。
構造体でのクロージャに比べて2〜3倍メモリを食うみたい。

余談だけど、上のfibを某所で見つけた遅延関数のキャッシュと組み合わせてみたら、
計算量が劇的に減って、かなりおいしい状況に。
あとは多倍長整数のライブラリがあればな〜。(Windows環境で使えるやつ)
650デフォルトの名無しさん:2006/08/25(金) 22:21:02
まぁ、memoizeが上手くいくケースなんて、
フィボナッチ数列を再帰で解くぐらいしかめったに無い使えないワザだけどね。
651デフォルトの名無しさん:2006/08/25(金) 23:10:49
>>649
言語の方であっても良いと思うんだけどな>>多倍長整数
652デフォルトの名無しさん:2006/08/25(金) 23:38:51
そうかあ
Dならそういうのを言語で,と期待できるんだなぁw
普通なら標準ライブラリに入れてくれ,となるだろうに
653641:2006/08/26(土) 00:13:27
>>649
不要なローカル変数も戻り先アドレスもレジスタ待避の分も
スタックポインタのアラインメントの分も全部巻き込んでクロージャに
突っ込むから、確かにメモリ消費は酷いっす。

まあ半分以上ネタなんで、実用上は構造体を使うべきかと...
# クロージャ用構造体をある程度自動生成してくれるmixinとか書けないかな
654デフォルトの名無しさん:2006/08/26(土) 01:12:56
Dというのはより良い機能を言語自体に付け足せる言語ですか?
655デフォルトの名無しさん:2006/08/26(土) 17:22:12
C++、Java、C#、Ruby、といったもので遊んできたボクですが、Dもおもしろい?
656デフォルトの名無しさん:2006/08/26(土) 17:53:37
割と。
657デフォルトの名無しさん:2006/08/26(土) 17:57:08
どういうとこが?
658デフォルトの名無しさん:2006/08/27(日) 01:00:34
ころころと仕様が変わるところかな。
659デフォルトの名無しさん:2006/08/27(日) 01:06:35
Javaの変わりようのが凄いけどなw

関数型とか組み込みスクリプトとか組み込みDBとかw

java.lang.XML xml = #root { #leaf { 1 } #leaf { 2 } #node { #leaf { foo } } };

Java 7でこんな構文も登場するらしい。
660デフォルトの名無しさん:2006/08/27(日) 02:00:18
>>659
Javaって自分の出自を忘れたらしいな。
もうEE専用って感じになりつつある。
661デフォルトの名無しさん:2006/08/27(日) 02:23:15
VB9のパクリ
662デフォルトの名無しさん:2006/08/27(日) 02:39:57
>>659
少なくとも Java の仕様の変化は「追加」に収まってるよ。
D のように過去のソースの書き換えが必要になることはない。
663デフォルトの名無しさん:2006/08/27(日) 02:48:31
追加に納めるからこそ汚くなる気もするけどな。
664デフォルトの名無しさん:2006/08/27(日) 03:02:46
確かに仕様は出来るだけ早く固めないと
GUIライブラリやIDEなんかを作ろうとしてる人も
中途でやる気をなくしちゃうんだろうね。
仕様が変わってコンパイルできなくなったら
修正が面倒だから。
665デフォルトの名無しさん:2006/08/27(日) 03:05:19
なんで同じ言語でポーティング作業してんだろうって絶望感はすごいからな
666デフォルトの名無しさん:2006/08/27(日) 06:45:40
>665
違う言語だと悟ればいいんだよ


・・・そうか?
667デフォルトの名無しさん:2006/08/27(日) 07:41:13
>>666しかしそれは開発者の無能を示すことになる。
668デフォルトの名無しさん:2006/08/27(日) 09:43:58
669デフォルトの名無しさん:2006/08/27(日) 12:05:40
言語仕様がころころ変わるとはこれ如何に。
まだ言語仕様はこう、って確立してすらいないのに。
670デフォルトの名無しさん:2006/08/27(日) 13:43:59
確立するまではころころ変わるのは仕方ないという事で自己解決してますね。
確立したのにころころ変わるのはまずいけど。
671デフォルトの名無しさん:2006/08/27(日) 15:54:47
アルファ版のお試し用のようなものとしてリリースされてるのに
それで仕様が変わったからって文句言う奴もおかしい。
672デフォルトの名無しさん:2006/08/27(日) 16:58:26
やっぱ正式版は売るんだろうか
673デフォルトの名無しさん:2006/08/27(日) 17:03:24
コンパイラは無料で、お金払うならSDKがついてきますよってノリでは
674デフォルトの名無しさん:2006/08/27(日) 19:10:09
つーか、まだβだし
しょうがないやん
675デフォルトの名無しさん:2006/08/27(日) 19:26:11
>>642
関数名ごとだから自力でやるよ

だいたい規則わかったし
676デフォルトの名無しさん:2006/08/27(日) 21:32:33
こんな機能知らなかった、、、

D では
配列型の引数の後ろに ... を続けると、 以降全ての引数を集めて一つの配列を作るようになります。 引数は指定された配列型に対して型検査が行われ、 個数は、 配列のプロパティとして取得することが可能です:
int sum(int[] values ...)
{
int s = 0;

foreach (int x; values)
s += x;
return s;
}

int main()
{
int i;

i = sum(8,7,6);
printf("sum = %d\n", i);

return 0;
}
677デフォルトの名無しさん:2006/08/28(月) 01:02:50
それはCでも書ける。

んじゃなかったっけ?
678デフォルトの名無しさん:2006/08/28(月) 01:23:35
Cだと引数の個数を明示的に渡さなきゃいかんのと、型チェックがない。
679デフォルトの名無しさん:2006/08/28(月) 02:21:52
インスタンスからクラスを得る事って出来る?rubyの obj.class みたいに。
ていうかそもそもクラスを変数のような物として持てる?

auto foo = new Foo;
auto bar = new foo.type;
=> barもFooのインスタンス

的な。
680デフォルトの名無しさん:2006/08/28(月) 04:40:40
そういう場合はtypeofを使う。

auto foo = new Foo;
auto bar = new typeof(foo);

クラスの情報が知りたい時は.classinfo。

printf("%.*s\n", foo.classinfo.name);
681デフォルトの名無しさん:2006/08/28(月) 12:24:57
>>680
アリガトウ!
682デフォルトの名無しさん:2006/08/28(月) 14:39:30
>>675
完成したら公開キボン
683デフォルトの名無しさん:2006/08/28(月) 21:37:15
win32.windowsが落ちる原因はwinnt.dの
const uint SECURITY_DESCRIPTOR_MIN_LENGTH = SECURITY_DESCRIPTOR.sizeof;
の行っぽい。

const uint SECURITY_DESCRIPTOR_MIN_LENGTH = 20;
とか
const uint SECURITY_DESCRIPTOR_MIN_LENGTH = _SECURITY_DESCRIPTOR.sizeof;
に編集すると落ちない。

んで見つけた。
//クラッシュ再現コード
const int fooSize = Foo.sizeof;
struct tagFoo {}
alias tagFoo Foo;
void main(){}
684デフォルトの名無しさん:2006/08/28(月) 22:18:12
ナイス
685デフォルトの名無しさん:2006/08/28(月) 23:46:52
環境変数を設定/取得したい場合ってどうすればいい?
686デフォルトの名無しさん:2006/08/28(月) 23:54:12
>>685
std.c.stdlib.(getenv|setenv|unsetenv)
687デフォルトの名無しさん:2006/08/29(火) 00:26:39
>>686
サンクス。putenvとかで探してた。
で、取得は出来たもののsetenv使うとリンクでエラー出るんだが……。
Error 42: Symbol Undefined _setenv

俺だけ?使うのに何か必要なのか?
688686:2006/08/29(火) 00:44:12
うーん、本当だ。調べずに適当に書いたのは失敗だったな。

もう、面倒だからC言語の関数を直接externすれば解決だよ。とかじゃ駄目ですか?
extern(C)int putenv(char*);
689デフォルトの名無しさん:2006/08/29(火) 00:57:38
>>688
ああ、それで使えるんだ。
いやとりあえず全然問題無い。どうもありがとう。
690デフォルトの名無しさん:2006/08/29(火) 02:24:43
ところで、いくらなんでもそろそろver1.0だろ?
と思ってぶらりと訪れてみたらこれかよ?
691デフォルトの名無しさん:2006/08/29(火) 20:25:42
[] ←の演算子のオーバーロードって出来なかったっけ?
出来るならその関数名教えてエロい人!
692691:2006/08/29(火) 20:30:25
事故解決しました。
単項演算子やら二項演算子やらじゃないのね。おかげで見逃してしまった・・・。
693デフォルトの名無しさん:2006/08/29(火) 23:19:04
やっとβになったの?
D言語は世に出すつもり無いんでしょ。
理想を追い求める職人の遊び道具のようだし。

適当なところで言語仕様固めて、早く普及して欲しいな・・・
694デフォルトの名無しさん:2006/08/29(火) 23:54:55
>>693 世に出て普及したとしても君には扱えないからさっさと他の言語にいくことをすすめます
695デフォルトの名無しさん:2006/08/29(火) 23:59:19
職人の遊び道具の仕様を固められると、遊びがいが減って激しく不愉快なわけだが。
むしろバージョンアップでの言語仕様の右往左往こそがD言語らしい。
696デフォルトの名無しさん:2006/08/30(水) 00:11:23
D言語はもう固めちゃって、右往左往はD++でやってほしい
697デフォルトの名無しさん:2006/08/30(水) 00:14:04
javaのバージョンアップ・スケジュールのように後方互換を意識しつつ
言語仕様を徐々に追加(拡大)していって欲しい。

何か次世代?の新機能ばっかりアレコレ詰め込んで修正してばっか
りで、全然仕様を固めようとしてない。

いつ出るか分からないし、もう待ちくたびれて、javaとかC#に流れてし
まった。

ハードに近い仕事はCで十分だし。

なかなかリリースされないし、仕様がどうこうよりも、Dの存在意義と
いうか、Dのやりたい事を明瞭にした方がいいのかも?
698デフォルトの名無しさん:2006/08/30(水) 00:53:21
だから君には向いていないって言ってるでしょ。
何度言えば理解できるんだろ。
日本語分かりますか?
699デフォルトの名無しさん:2006/08/30(水) 01:22:29
Dがなかなか出ないから、このさい
C + gnuライブラリー + gcライブラリー + gnomeライブラリー
でいいんじゃないの

横から悪いけど、君に向いてるも何も
Dだと有利なところが無いようだけどさ
700デフォルトの名無しさん:2006/08/30(水) 02:31:20
某やだからさ
701デフォルトの名無しさん:2006/08/30(水) 03:59:09
>javaとかC#に流れてしまった。
Dから流れる先でも全然ないというか、
そっちに行くようなら始めからDは向いてなかったんだろうね
702デフォルトの名無しさん:2006/08/30(水) 08:42:48
もはやDじゃないと意図したプログラムを作成出来ない俺は病気だな
703デフォルトの名無しさん:2006/08/30(水) 09:47:28
>>702
それはすごいな
バージョンアップで仕様変更のたびにプログラム作成できなくなっちゃうw
704デフォルトの名無しさん:2006/08/30(水) 09:49:37
>>702
俺も。
配列周りが特に。
705デフォルトの名無しさん:2006/08/30(水) 12:21:01
バージョンアップで仕様変更のたびにプログラム作成できなくなるなんてどんだけ融通が利かないんだよ。
706デフォルトの名無しさん:2006/08/30(水) 15:08:19
バージョンアップに伴う仕様変更で右往左往する状況を楽しめる人意外は
Dに関わらないことをすすめます。
おとなしくJavaなりC#でも扱ってろってこった
707デフォルトの名無しさん:2006/08/30(水) 15:20:04
アンチの自演うざ
708デフォルトの名無しさん:2006/08/30(水) 16:44:41
>>697
漏れは
・超高速のコンパイル速度
・VMのいらないネイティブバイナリ
・ヘッダファイル要らない
ってとこに魅力を感じてまう。
遅延評価とかは正直(´・ω・`)ドウデモイイ…

あ、よく考えたら、バージョンupなんか付いていかずに
気に入った版をずっと使い続ければいいんじゃね?俺天才?
709デフォルトの名無しさん:2006/08/30(水) 16:47:26
>>708
俺も俺も
あとは、CPAN並みにライブラリが豊富だと
いいなーって思う
710デフォルトの名無しさん:2006/08/30(水) 17:02:45
>708
版の違うライブラリが使えるかどうかわからんのでダウト
まあネタだろうけど
711デフォルトの名無しさん:2006/08/30(水) 17:16:22
ネイティブ・バイナリーでも、ランタイムが無いと動かないんじゃ、
結局ランタイム・ライブラリーに頼るしかないんじゃ、
CやDやJavaとか、言語の違いはあまり関係ないと思うけど・・
712デフォルトの名無しさん:2006/08/30(水) 17:44:54
PCや32Bit以上機器が前提だと今のハードの進歩からして、
実行時の速さやレスポンスはそんなに気になるほどでもない感じ。
それよりも他のIOからの入出力の方がレスポンスが遅いから
そっちの方が気になるけどさ。

>>699がいいたいこと分かる気がするけど、
Dが活躍するところがいまいち見出せない。
だから正式版も出ないし、期待されていても、
いつまでも普及しないのかなと思っちゃう。
D使ってる人って、こういうのが大事だと思ってないのかな?
713デフォルトの名無しさん:2006/08/30(水) 18:02:14
Dは、CやC++でゴリゴリ書かなきゃならない分野で役に立つものであって、
Java、PHP、Perl、.NETで済むのならわざわざつかわなくったって良いと思う。
Javaの機能との比較は必要ないと思うが。
714デフォルトの名無しさん:2006/08/30(水) 18:54:44
これの配列結合ってsizeofとmemcpyを端折ってるだけでしょ?
タイプシュガーは大切だけど、見た目以上の効果は無いと思う
715デフォルトの名無しさん:2006/08/30(水) 19:17:07
>>714
折り畳みができる。
保守性が高い。
#遅いのは同意。
716デフォルトの名無しさん:2006/08/30(水) 20:11:56
CやC++は開発者に負担がかかる。
前方宣言だの未初期化だの.だの::だの->だの。

VBやJavaやC#はエンドユーザーやPCに負担がかかる。
実行時ランタイムだのVMだの。
柔軟性が損なわれててOSのAPIを使用するのに余計な手間がかかるし。

理想には程遠いが理想に最も近いからDを使ってる。
Dの現状に文句言ってる香具師はこんな些細なことすらに妥協できないのかよ。
717デフォルトの名無しさん:2006/08/30(水) 20:21:54
まあGC使う以上はアロケーションは可能な限り隠蔽したほうがいいかも
718デフォルトの名無しさん:2006/08/30(水) 20:49:32
Dでちょっとしたラッパー作ってたら最後に必ずBus errorが出るようになった・・・

どこが悪いんだがわからない・・・
719デフォルトの名無しさん:2006/08/30(水) 20:50:57
>>716 いや〜、ツッコミどころ満載ですけど、みなさんツッコミいかがですか〜
720デフォルトの名無しさん:2006/08/30(水) 20:59:23
定職につきたがらないモラトリアム人間。それがD。
721デフォルトの名無しさん:2006/08/30(水) 21:16:32
シェアウェア厨のオナニー言語にアインシュタインを超えてる人が降臨したのか。
722デフォルトの名無しさん:2006/08/30(水) 21:23:24
Visual Studioもただで使えるしC♯の方がいいのに
なんでまだD言語なんてシェアウェア厨のオナニー言語にアインシュタインを超えてるの
MONOでネイティブコードも作れるのになんで欠陥だらけのガベコレを使ってるんだ
お前らのやっていることの意味がわからない
わからないが俺のここを見てくれ
Java、PHP、Perl、.NETで済むのならわざわざつかわなくったって良いと思う。ゴリゴリ
「すごく大きいです・・・」
いや〜、ツッコミどころ満載ですけど、みなさんツッコミいかがですか〜
「そんな大きいの入りきれません><」
723デフォルトの名無しさん:2006/08/30(水) 21:25:25
DMCってgccより遅いんだけど、D言語なんて作ってる場合じゃないのでは?
724デフォルトの名無しさん:2006/08/30(水) 21:25:51

ずーとsage進行で、地下に潜んでいる人たちなの、ここの人たちは?

たまには太陽浴びるのも気持ちいーよー!

あー、おひさまって暖かいー、って実感できるからさ!!

           ,.. -───‐- 、
         ,/:.:.:.:.:.:_,,. -─- 、:.:.:.`ヽ、  
        /:.:.:.:.:.:/ ___  \:.:.:、\_
     r‐く、:/:.:.://´:|:.:.:.:、:.:.:.:`\|:.:.:.lく__{_
     く二ニ/:.:.:./:.:|:.:.:.:!:.:.:.:.ヽ:.:ヽ\:.l:.:.ヾ`くニヽ、
  r─‐ァ'´ /:.:.:.:.|:_/!|:.:.l|:.:.:.:.l:.:|、:.:.|:.:l:.|:.:.:.:|l∠  lヽ
  l/´!|>'|l:.:.:.:.l!:|`!|ヽ|ヽ:.:.:ト、!, く|l:.|:l:.:.:.:.ト、_`ヽ、Ll
.    / /|l:.:.:l:|,rf⌒ヽ! \l´ ィ⌒'ミ |:.:.i:.|:.:l|人  〉
   | ,イ:.:.l:.ハ、:ヽ仆、:::リ      ト、:::リ l:.:.|ノ:/)っ ∨
   ∨|ハ:.|:.:.:.:|Tr‐っ'    ,   ー' /:.:.//'´
     l! ヽrーュi ⌒!、 t-r‐!  ,.ノ:.//
       / 〈l|L__人`ヽ`ー'イ |lィー'´   
       `ー-=‐'`ヾ\_弋_フ/く
             「`ーく_乍_フ_ ト、_
            l /l |:| ヽゝ/ー、_)
             `ヘニLl ̄`
                 \入
                ヽノ
725デフォルトの名無しさん:2006/08/30(水) 21:27:55
とりあえずDはこれ以上仕様が変わらない部分はどこかっていうのを確定してくれないと「遊ぶ」以上のことができなくて困る。
726デフォルトの名無しさん:2006/08/30(水) 21:27:58
  「だってこれは…オヤシロ様の祟りだもの」
    :::::::::::|       ,,rッ=广"`''フー-、,,_./:::::::`''-、::::::::::::::::;/:::::::::::::::::::::::::::::.  |
    :::::::::::l       /_,,/--''ッ┴---、,,,/:::::::::::::::::::`ヽ::::::;/::::::::::::::::::::::::::::::::  |
    ::::::::::::|       ''/::;rチ――--、,,/ヽ:、:::::::::::::::::::/j:::::::::::::/::::::::::::::::::::  |
    :::::::::::::|       /;;/ /;;;;;;;;;;;;;;;;;;;;/`''-、::ヽ、::::;/  /::::::::/::::::::::::::::::::::  |
    i、::::::::::|      〃  .|;;;;;;;;;;;;;;;;;;;ノ:::::::::_;ヽ‐ 'く   ./:::::::./:::::::::::::::::: :::::::  |
    ,i\:::::::|     ′   |;;;;;;;;;;;;;;/;;;;::-:''´! .゙i   `ッく:_::/:::::::::::::::::::: ::::::  |
    .i| .ヽ:::::l         l;;;;;;;;;;;;" ̄;;;;;;;;;;ノ   l/''/゙::;;へ:::::::::::::::::::::: :::::::  /
    ..i|  ヽ:|         戈_     :ノ   " .//::::::::::::::::::::::::::  :::::::  /
    : !   リ             ̄''''―ニ=-' ._,,-〃::::::::::::::::::::::::::::   :::::::  /
                             ,, -''::::::::::::::::::::::::::::::::::::   :::::::  /
                          _,, -::"::::::::::::::::::::::::::::::::::::::::   /:::::  /
        i|             ,,,-::''::::::::::::::::::::::::::::::::::::::::::::::_,, -:::'':::::::::  /
        `      ._,, -::'"::::::::::::::::::::::::::::::::::::;;;;;:-ッー::''':::::::::::::::::::   /
          _,,,,-::'':゙_::;;;::;;;::;;;---― ''' ̄厂 ,,シ::::::::::::::::::::::::::::   /
      <二二> ̄ ̄              メ -::''::::::::::::::::::::::::::::::::  .i
                            ツ::::::::::::::::::::::::::::::::::::::::::   .!
727デフォルトの名無しさん:2006/08/30(水) 21:32:56
>>725
閉鎖空間内で「遊ぶ」以上のことをやってれば良くね?
世間に合わせてコンパイラのバージョン上げたりせず。
728デフォルトの名無しさん:2006/08/30(水) 21:42:43
何このスレ・・・・・・・?
             /ヽ       /ヽ
            / ヽ      / ヽ
  ______ /U ヽ___/  ヽ
  | ____ /   U    :::::::::::U:\
  | |       // ___   \  ::::::::::::::|
  | |       |  |   |     U :::::::::::::|
  | |      .|U |   |      ::::::U::::|
  | |       | ├―-┤ U.....:::::::::::::::::::/
  | |____ ヽ     .....:::::::::::::::::::::::<
  └___/ ̄ ̄      :::::::::::::::::::::::::|
  |\    |           :::::::::::::::::::::::|
  \ \  \___      ::::::
729デフォルトの名無しさん:2006/08/30(水) 22:09:11
おまいら、Apache,JavaVM,Linux,Windows,MySQL,Oracle...とか、
なんで出来てるのか考えたことぁあるか?
JavaとかC#でできてると思う? というか、ソースなんてみたことある?
ところで上にあげたものって、みんなメモリ管理とかデータ構造で苦労してんだぜ。
ちったぁ、Dさんのいうこと聴いてやれよ。
730デフォルトの名無しさん:2006/08/30(水) 22:25:15
アンチが自分の意見を論破されてAA使って荒らし始めたな、うぜぇ
731デフォルトの名無しさん:2006/08/30(水) 22:47:51
>>729 大丈夫か?それらは、少なくともDで作ってるわけではないと思うぞ。そしてD自体をDで作ってるのか?あ?
732デフォルトの名無しさん:2006/08/30(水) 23:09:31
>>731
あほか、文脈みてから言え。
今苦労してるから、なんとかしようとしてるんじゃねぇのか?
Cで解決できるんなら、さっさとだれか使える標準作れ。
733デフォルトの名無しさん:2006/08/30(水) 23:34:37
スレが伸びてるから、なんかあったかと思ってたら、毎度の如くのどうでもいい話題か。
734デフォルトの名無しさん:2006/08/30(水) 23:36:05
まぁとりあえず、Dが天下とるまでがんばろう矢
735デフォルトの名無しさん:2006/08/30(水) 23:44:38
それはつまり永遠にがんばりつづけろと
736デフォルトの名無しさん:2006/08/30(水) 23:55:47
つまり、Dで何したいのか決めてからだろうね。
で、俺達はDで一体何をしようか?Dで何ができるんだろう?
737デフォルトの名無しさん:2006/08/31(木) 00:04:19
>>736
何だそれ。
Dで何某かしたいことがあるからDを使うんじゃないの?
738デフォルトの名無しさん:2006/08/31(木) 00:10:26
>>736
だから、Javaやってるような人を相手にしちゃダメだって
739デフォルトの名無しさん:2006/08/31(木) 00:11:29
スマソ
736 ×
737 ○
740デフォルトの名無しさん:2006/08/31(木) 00:22:11
あとで泣き見せてやるさ!
次の未来は俺達が作るのさ!
まってろよ、未来!!
741デフォルトの名無しさん:2006/08/31(木) 00:31:36
Dに行っちゃう人の心境って、やっぱ>>716と同意見なのかなぁ

例えば、前方宣言なんか、自分で(文字処理用の)ツールを作って
ヘッダー作るときにそのツールを通せばいいだけでしょ?

未初期化の怖さ知らないでしょ?

演算子 . -> はCの言語仕様として納得し、それと自分のやりたい事との
見極めが出来ないんだろうな。

「些細なことにすら妥協」ってこっちの方がよっぽど些細だと感じちゃうなぁ。

やっぱツッコミが多かった。なんか私って釣られたみたいー☆
742デフォルトの名無しさん:2006/08/31(木) 00:35:57
Dをやる理由?
俺は新しい機能を入れたと思ったら、
次のバージョンでそれをdeprecatedにするようなWalterたんに惚れたからだ。

それ以上の理由がない。
743デフォルトの名無しさん:2006/08/31(木) 01:00:25
>>741
些細なことだけどわざわざ妥協してCを使うまでもなくね?
Dという代替言語があるんだから。
代替言語がなかったら妥協するしか無いが。
744デフォルトの名無しさん:2006/08/31(木) 01:18:27
俺の場合は、Boostとかc2libとか他も含めて色々苦労して、やっぱ色々問題があったから
Dにというのがあるんだけどなぁ
>>741 その程度のことで判断してるのか?
745デフォルトの名無しさん:2006/08/31(木) 01:21:38
>>741
その辺は本当に些細なこと。
Dに移行する理由の内のほんのわずか。
Cに対する不満がDで解決する一部分の例に過ぎない。
746デフォルトの名無しさん:2006/08/31(木) 01:35:23
高速コンパイルに惹かれた人。
DBCに惹かれた人。
配列の扱いに惹かれた人。
文法に惹かれた人。
ネスト関数、ネストクラスに惹かれた人。
スコープガード、プロパティ、テンプレート、ネイティブコード、walterタン、etc...

Dに行っちゃう人の心境は多種多様だと思うよ。
なんで>>741はそういう視野の狭い見方しちゃうかな。
747デフォルトの名無しさん:2006/08/31(木) 01:36:21
お前ら釣られすぎ

  ∧∧                   
 (゚Д゚ )                   
  ⊂  ヽ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   〉 ノノ~ <    おちけつ〜  
  ∪∪    \_________
748デフォルトの名無しさん:2006/08/31(木) 01:54:20
確かに>>741は図星なんだよなぁ〜 本当に細かいところなんだけどさぁ。
749デフォルトの名無しさん:2006/08/31(木) 01:56:17
Dに惚れたんじゃない
Dが漏れに惚れたんだ
750デフォルトの名無しさん:2006/08/31(木) 02:01:19
オレもC++のコピーコンストラクタとかSTLの挙動不審とかかなり参ったよ。
obj->nameとかも美的センスねーって思ってた。
だからDにとても強い魅力を感じてるけど、そろそろD出来上がってくれよ。

甘い言葉で引き付けているだけで、さすがにもう待ちくたびれたよー
D使っていても結局は小さいツールしか作ってねーし
751デフォルトの名無しさん:2006/08/31(木) 02:04:15
アセンブラからCに移行するときにも似たような煽りあいがあったんだろう。
まあ、時代に選ばれればそれが正義って事だ。
752デフォルトの名無しさん:2006/08/31(木) 02:24:44
ということは、今のD言語は迷走のときなのか・・・
753デフォルトの名無しさん:2006/08/31(木) 02:48:05
いやあもうDの復権はないと思うよ。
754デフォルトの名無しさん:2006/08/31(木) 03:04:25
迷走もしてないんじゃね?おっさんが1人で作っている趣味言語だし。
MSとかSUNの資本の前には象の前の蟻みたいなもんだろうしさ。

でも、C#がこけたMSがVMよりネイティブ路線に方向転換して(OSは押さえてるしな)、
ある程度コミュニティが育っているD言語に注目、そのままお買い上げ位ないかなあ。
とか激しく妄想しまくりんぐ。
755デフォルトの名無しさん:2006/08/31(木) 03:04:26
がっくし・・ OTL
756デフォルトの名無しさん:2006/08/31(木) 03:11:35
D言語はC99にすら劣ります。あのISO/IEC化されたC99ですら
あのざまなのです。規格も提出されてないD言語が主流になるなんて、
逆立ちしたって無理です。
757デフォルトの名無しさん:2006/08/31(木) 03:29:03
>>753
復権?

>>756
劣るかどうかはともかくとして、主流とかどうでもいいよなあ・・・
定期的にこういう流れになるよな。なんでだ。
758デフォルトの名無しさん:2006/08/31(木) 03:31:35
C++の提案を見ると
むしろJavaやDの方が実験台になっている
のろいのはいいことらしい
759デフォルトの名無しさん:2006/08/31(木) 03:31:50
がっくし・・ OTL
760デフォルトの名無しさん:2006/08/31(木) 03:56:20
>>758
Dは実験結果出るのが早いからなw
761デフォルトの名無しさん:2006/08/31(木) 03:57:50
>>757

今現在D言語に向いていない人

1.主流になる言語以外は覚える価値が足りない/そんな余裕がない
2.JavaやC#の代替言語が欲しい
3.IDEがないとプログラミングできない/やる気になれない

今現在D言語に向いている人

1.D言語が主流になることがそれほど重要ではない
2.そもそもまだIDEが欲しくなるようなアプリを書かない/別にIDEいらない
2.C/C++のいろんなことに辟易している
3.やっぱネイティブが好き
4.言語仕様の○○が嬉しい(GC,変数自動初期化,組み込み型文字列などなど)

各自家で考えてくるように
762デフォルトの名無しさん:2006/08/31(木) 07:20:48
なんか自分が好きなヒーローがナンバーワンじゃないと
気がすまないお子様みたいな印象受けますよ。不毛過ぎ。
Dはまだ冒険できる段階なんだから、あれこれ試して
他の言語と影響し合って共に成長していきゃみんな幸せでしょうに。
その結果淘汰される言語が出てきてもそれはもうしょうがないでしょ。
763デフォルトの名無しさん:2006/08/31(木) 08:50:11
ほしい機能なんか自分で作ればいいとか言ってるけど
それが面倒だから、機能がある言語に乗り換えるという発想をしないのか?

というか、別に自分で作ればいいジャンと主張するのは構わないけど
その労苦を厭うことを認めるくらいの寛容さがほしいね
764デフォルトの名無しさん:2006/08/31(木) 09:09:37
>>727
そうはいかないだろ。バグフィクスだってあるんだから
765デフォルトの名無しさん:2006/08/31(木) 12:12:50
>>758
おそいの おそくないのってのは、自分で計っていってるんだよなー?

実測する能力がないのなら、ここでもみとけ
ttp://shootout.alioth.debian.org/gp4/d.php
766デフォルトの名無しさん:2006/08/31(木) 12:32:34
>>761で、いつ正式版をリリースするつもりなの?
767デフォルトの名無しさん:2006/08/31(木) 12:39:31
昔はwinehpを期待して何年も待ってたけど、違った方に流れてしまった。
wineのやりたい事はvirtual pcやvmwareに吸収された感じだった。

Dのネイティブと言う発想は、もう既に、java virtual machineや.net frameworkに
吸収されてるんじゃないのか。確かに実行速度が速い遅いはあるけどさ。

ハード的なネイティブ(cpu毎の命令セット)?と言うか、
ソフト的なネイティブ(bytecode)の方にさ。
768デフォルトの名無しさん:2006/08/31(木) 12:50:32
>>767
3行目から意味が全くわからないな・・・
769デフォルトの名無しさん:2006/08/31(木) 12:50:34
>>766
意図ワカメ。
それを>>761に質問してどうするの?
770デフォルトの名無しさん:2006/08/31(木) 12:51:14
>>769
ヒント:つり
771デフォルトの名無しさん:2006/08/31(木) 13:18:07
Dのコンパイルが早い(というかC++のが遅い)のはどの仕様が原因かな。
やっぱりテンプレートまわり?
772デフォルトの名無しさん:2006/08/31(木) 13:47:17
>>771
つ プリプロセッサが無い
773デフォルトの名無しさん:2006/08/31(木) 13:53:50
今のところ D の GC 実装って保守的だけど、
正確な GC が実装される可能性ってあるんだろうか。
そもそもタグビットとかを設けずに正確な GC を実装可能なのか
よく知らないんだけども。
774デフォルトの名無しさん:2006/08/31(木) 15:33:49
なにをもって正確なGCっていうの?
共通の言葉としてそんなのあるの?
773のオレオレ言語に正確なGCってのがあるの?
775デフォルトの名無しさん:2006/08/31(木) 15:58:57
「集め残しがないような」という意味?
776デフォルトの名無しさん:2006/08/31(木) 17:10:04
777デフォルトの名無しさん:2006/08/31(木) 17:41:51
あぁ、exact GCのexactをそのまま直訳したのね。
Java界隈ではexact GCを正確なGCって翻訳する人がいるのか…。
778デフォルトの名無しさん:2006/08/31(木) 17:43:23
Exactly(そのとおりでございます)
779デフォルトの名無しさん:2006/08/31(木) 18:15:44
技術系用語を下手に翻訳されると余計意味がつかみにくくなるな。
慣用句と一緒でexact と GCで意味を成してるんだから
exactだけ翻訳するのはおかしいだろ
と、思う今日この頃
780デフォルトの名無しさん:2006/08/31(木) 18:38:06
正確なゴミ収集者。
781デフォルトの名無しさん:2006/08/31(木) 18:52:16
名詞に相当する言葉は翻訳しないでそのまま使えってこった。
寿司とかだって海外では翻訳されないでそのまま辞書に載ってんだろ。
782デフォルトの名無しさん:2006/08/31(木) 21:08:34
勘違い
言い訳粘着
見苦しい
783デフォルトの名無しさん:2006/08/31(木) 22:15:29
>>778
無駄にワロタ
784デフォルトの名無しさん:2006/08/31(木) 22:36:40
http://aql.osx.cc/GoogleMajority/?word=%22%E6%AD%A3%E7%A2%BA%E3%81%AAGC%22&word=%22exact%20gc%22
だそうなので両方知っとけという話だろうな。
"conservative GC"のことを "保守的なGC"
というのはわりと普通だろうし。
785デフォルトの名無しさん:2006/08/31(木) 22:45:53
Googleの検索結果数は人によって違うから数字も書いておいた方がいいよ
786デフォルトの名無しさん:2006/08/31(木) 23:59:21
保守的なGCってのもあんま聞かんな。。。
787デフォルトの名無しさん:2006/09/01(金) 03:46:28
> 保守的なGC の検索結果 約 13,200 件中 1 - 10 件目 (0.16 秒)
この手の用語で1万超えてれば普及度高いほうだと思うけど.
788デフォルトの名無しさん:2006/09/01(金) 03:48:50
GC関係の話題で保守的なGCってのはよく聞く。
正確な GC ってのは聞いたこと無いけどな。
789デフォルトの名無しさん:2006/09/01(金) 03:54:42
DMD 0.166 リリース
790デフォルトの名無しさん:2006/09/01(金) 04:11:07
D 0.166
Aug 30, 2006
New/Changed Features

* Upgraded zlib from 1.2.1 to 1.2.3 per Bugzilla 286
* Removed implicit conversion to delegates, except in the case of typesafe variadic arguments.
* Replaced with lazy parameter storage class per Tomasz Stachowiak's suggestion D/41633.
* Incorporated Oskar Linde's patches to support member templates.
791デフォルトの名無しさん:2006/09/01(金) 04:27:30
>>789 , >>790
こんな、時間にお疲れ様。
ちょっと落として遊んでみる。
792デフォルトの名無しさん:2006/09/01(金) 04:48:05
lazyがdelegateなのを利用したトリック(>>635)が使えなくなったか。残念。
まぁ、メンバ関数テンプレートが使えるようになったから良しとしとこう。
793792:2006/09/01(金) 04:52:33
あ、ごめん勘違い。廃止されたのはexp -> exp delegte()か。
別にあのトリックは普通に使えるね。
794デフォルトの名無しさん:2006/09/01(金) 05:05:22

void dotimes(int count, void delegate() exp)

から

void dotimes(int count, lazy void exp)

に変更なだけ?
795デフォルトの名無しさん:2006/09/01(金) 08:59:30
ほんとにメンバ関数テンプレート使えるようになってる?
本家のドキュメントに言及されてる部分が見つからないんだけど
796デフォルトの名無しさん:2006/09/01(金) 10:24:07
メーリングリストより
>It is really just a small patch that enables implicit function template instantiation for member function and operator templates. It should work identically to how IFTI works for free functions.
>It should open up quite a few door. Here is a quick demo I hacked together of how compile time dimensionality checking can be implemented:
>http://www.csc.kth.se/~ol/physical.d
797デフォルトの名無しさん:2006/09/01(金) 20:52:18
おおーすばらしい
798デフォルトの名無しさん:2006/09/01(金) 23:13:28
zlib がバージョンアップしたのかと思ったら一年放置してただけなのね.
799デフォルトの名無しさん:2006/09/02(土) 05:58:51
enum eNumbers { zero, one }
const char[][eNumbers.max+1] sNumbers = [
  eNumbers.zero  : "0",
  eNumbers.one  : "1",
  ];

void main(char[][] args) {
  eNumbers x = eNumbers.one;
  switch(x) {
case sNumbers[eNumbers.zero] :
  break;
case sNumbers[eNumbers.one] :
  break;
default:
  break;
  }
}

なぜこれが、通らない?
800デフォルトの名無しさん:2006/09/02(土) 06:03:37
あ、まちがい
eNumbers x = eNumbers.one;
じゃなくて
char[] x = "1";
801デフォルトの名無しさん:2006/09/02(土) 08:47:32
>>800
switchがintとchar[]の比較になっているということでは。
802デフォルトの名無しさん:2006/09/02(土) 10:03:42
>sNumbers[eNumbers.zero]
>sNumbers[eNumbers.one]
が定数じゃないから
803デフォルトの名無しさん:2006/09/02(土) 10:19:18
>>799-800
http://www.kmonos.net/alang/d/statement.html#switch
 > caseの式は全て、switch Expression の型Tへ暗黙に変換できるような
 > 定数値か定数配列へ評価されなくてはなりません。
で、定数配列なのはsNumbersであって、
sNumbers[0]やsNumbers[1]ではないから、ということなんだろう。

しかし、同じ理屈で
 const int[] ns = [1,2,3,4,5];
 ns[0] = 6;
が通るんだが、だれもうれしくないと思う。

それともバグなのかな。
constが型修飾子じゃなくて記憶クラス指定子扱いな仕様バグなのか、
配列に対するconst指定の振る舞いのバグなのか。

>>802
 const char[] char0 = "0";
として
 case char0:
とするとchar0が文字列リテラル扱いされて通るが、
 const char[] char0 = ['0'];
として
 case char0:
とすると通らないってのは嫌だと思う。
804デフォルトの名無しさん:2006/09/02(土) 11:00:00
classのメソッドがテンプレート化できません……orz
805デフォルトの名無しさん:2006/09/02(土) 11:57:40
>>803
>const char[] char0 = ['0'];

こんな書き方する奴がイヤだと思う。
806デフォルトの名無しさん:2006/09/02(土) 12:48:39
余談だが "mojiretsu".dup で定数でない文字列扱いなのかあ
ところでD言語とC++のconstの違いについて書いている資料ってどこかにありますか?
違うとはいろいろなところで見かけるけどどう違うのかがよくわからなくて
807デフォルトの名無しさん:2006/09/02(土) 12:52:33
>>806
"mojiretsu".dupは折り畳みが実装されてないだけかと。
constはstatic thisで初期化できるとか。
808デフォルトの名無しさん:2006/09/02(土) 14:48:16

const int[] xxx = [0];

const char[] xxx = "0";
が大丈夫で

const char[] xxx = ['0'];

const char[][] xxx = ["0"];
がダメっていう理由が思いつかない。

バグなのか?

809デフォルトの名無しさん:2006/09/02(土) 15:16:46
動的配列の初期化子や文字列リテラルは実装されているけど配列リテラルは実装されて無い
810デフォルトの名無しさん:2006/09/02(土) 15:30:12
>>808
const char[] xxx = ['0'];はどう考えてもバグ。
const char[][] xxx = ["0"];は現状では静的配列の静的配列じゃ無く動的配列の静的配列になってるんじゃね? どっちにしてもバグ。

ソース読んで無いから正確には分からないけど。
811デフォルトの名無しさん:2006/09/02(土) 16:22:26
const int[] xxx = [0];
static assert (xxx[0] == 0);

const char[] xxx2 = "0";
static assert (xxx2[0] == '0');

const char[] xxx3 = ['0'];
static assert (xxx3[0] == '0');

const char[][] xxx4 = ["0"];
static assert (xxx4[0] == "0");

これで評価できるのはxxx2のみ
今までは配列リテラル未実装のせいかと思ってて「配列リテラル早く来い」書き込んでたけど
case文にxxx1を使っても大丈夫なら何かしらバグが存在してるみたいだね。
812デフォルトの名無しさん:2006/09/02(土) 16:23:17
×xxx1
○xxx
813808:2006/09/02(土) 16:33:00
>811

あ、ごめん。まとめまちがってた。

const int[] xxx = [0]; は通らない。
814799,800:2006/09/02(土) 17:02:09
>>801-812
お返事ありがとう。勉強になりました。


で、今のところenumと文字列の整合をしようと思ったらこんな感じにするしかないのかな?

template sNumbers(eNumbers idx) {
  static if(idx == eNumbers.zero)
    const char[] sNumbers = "0";
  static if(idx == eNumbers.one)
    const char[] sNumbers = "1";
}

case sNumbers!(eNumbers.zero) :
  break;
815デフォルトの名無しさん:2006/09/02(土) 17:17:25
win32.windowsをimportしたときのエラーをみながら修正するの疲れた。
もう諦めよう…
816デフォルトの名無しさん:2006/09/02(土) 17:19:56
>>814
enumと文字列の整合に限らず、配列の静的評価の問題はそれ以外に解決方法見つからん。
817デフォルトの名無しさん:2006/09/02(土) 17:22:05
>>815
>>683の修正して
importをpublic importにするだけじゃね?
818デフォルトの名無しさん:2006/09/02(土) 17:23:08
>>817
うんごめん、ぐぐったら簡単に出てきた。
ttp://d.hatena.ne.jp/haru-s/20060829
819デフォルトの名無しさん:2006/09/02(土) 20:36:32
>>818
"aaa"w.toT()って書けるな。
どうでも良いけど多分こっちのが書きやすい。
820デフォルトの名無しさん:2006/09/02(土) 21:40:07
lazy int closure = counter();
というふうに、変数に束縛できたらいいのに
821デフォルトの名無しさん:2006/09/02(土) 22:02:28
>>820
delegateに変換するという荒業でなんとか。
T delegate() lazy2dg(T)(lazy T v){
    asm{
        naked;
        mov EAX,[ESP+4];
        mov EDX,[ESP+8];
        ret 8;
    }
}
void main(){
    int x;
    auto closure = lazy2dg(++x);
    closure();
    closure();
    printf("%d\n",x);
}
822デフォルトの名無しさん:2006/09/02(土) 22:39:48
テンプレートでうまいこと書けそうで、書けないんだよなあ。
823デフォルトの名無しさん:2006/09/02(土) 22:43:45
import std.string;
import std.stream;

union X {
 char[] str;
 ubyte[] bin;
}

int main(){
 X x;
 x.str = "あaいi";
 char[] r = std.string.format("%s(%d) (%.s)(%d)\n", x.str, x.str.length, x.bin, x.bin.length);
 printf(r);
 return 0;
}

これだと x.str.length も8になるんだけど4じゃないの?
824デフォルトの名無しさん:2006/09/02(土) 22:58:39
>>823

echo -n "あaいi" | nkf -w | wc -c
8

825デフォルトの名無しさん:2006/09/02(土) 23:14:10
>>823
あれ、仕様が変わったのかな
"あaいi".lengthだけでも8になってる。(utf-8)
826デフォルトの名無しさん:2006/09/02(土) 23:16:58
>>823
std.utfで文字数を取得出来たんじゃないかな?
827デフォルトの名無しさん:2006/09/02(土) 23:35:38
>>825
それが4になる仕様ってあったか?
俺が知ってる限りそんな仕様の時代一度もなかったが。
828デフォルトの名無しさん:2006/09/02(土) 23:40:45
どーやったら4バイトで表現できるのか逆に疑問
829デフォルトの名無しさん:2006/09/02(土) 23:41:40
"あaいi".lengthは確かに8が正解とは言えないが
char[]やbyte[]に落とされたら8になるのは当たり前だ罠。

utf8を格納する型、ったってchar[]は単なるcharの配列だし
utf8の1文字のサイズは可変なのに対しchar.sizeofは1固定だからな。
830デフォルトの名無しさん:2006/09/03(日) 00:03:52
>>821

なにげに便利そう。でも凶悪なコード(w
831デフォルトの名無しさん:2006/09/03(日) 00:07:20
実装依存しまくりだもんな。lazyが組み込まれたのなら、bindも組み込んで欲しいなあ。
832デフォルトの名無しさん:2006/09/03(日) 05:39:02
charってのはutf8な文字1文字を表すもんだからchar[] foo = "あいうえお"の時foo.length == 5だと思ってた。
動的配列のlengthは要素数の取得設定ってあったし…すまなかった。

でも俺以外にも勘違いしてるヤツはいるはず!
833デフォルトの名無しさん:2006/09/03(日) 05:56:49
> charってのはutf8な文字1文字を表すもんだから
834デフォルトの名無しさん:2006/09/03(日) 06:21:59
一番大事な、 char 型は「符号なし 8 bit」 の記述に気づかなかったのか・・・。そんなバナナ。

835デフォルトの名無しさん:2006/09/03(日) 08:35:20
>>832
マルチバイト文字使いたくないならdcharでも使っとけ。
まぁ細かい事考えるとUTF32でも微妙に例外あるけどな。
836デフォルトの名無しさん:2006/09/03(日) 11:35:54
char c1 = 'あ';
char c2 = 'i';

assert(c1.sizeof == 3);
assert(c2.sizeof == 1);


char[] str = "あaいi";

assert(str[0]. == 'あ');
assert(str[1]. == 'a');
assert(str[2]. == 'い');
assert(str[3]. == 'i');

assert(str[0].sizeof == 3);
assert(str[1].sizeof == 1);
assert(str[2].sizeof == 3);
assert(str[3].sizeof == 1);

assert(str.length == 4);


きめぇw
837デフォルトの名無しさん:2006/09/03(日) 12:18:18
うわイヤすぎw
838デフォルトの名無しさん:2006/09/03(日) 20:09:40
今日書いた驚愕コード

with(this)
{
メンバ変数に代入していくコード
}
839デフォルトの名無しさん:2006/09/03(日) 22:35:04
>>836
ほんとにそんな仕様になってんのかと思ってびびった。
そんなはずあるわけないよなぁ。よかったよかった。
840デフォルトの名無しさん:2006/09/04(月) 00:36:10
pimplやろうとするとエラーになる。
mixinで対処できるけど、なんだかなぁ。
841デフォルトの名無しさん:2006/09/04(月) 00:37:26
>>840
詳しく
842デフォルトの名無しさん:2006/09/04(月) 00:51:57
Dでpimplやる必要性あるのか?
843デフォルトの名無しさん:2006/09/05(火) 07:28:37
http://www.kmonos.net/alang/d/lazy-evaluation.html
なんかを読んでてふと思ったんだけど、
こういう説明に出てくる、dotimes関数とかEnforceテンプレートのような
瑣末なコード断片って、ライブラリ化されるほどでもないし、備えておくと
便利というほどには汎用性のある関数ってわけでもないけど、
いざその処理を書くとなると、いちいち書くのが不毛な感じがするんだよなあ。

こういうどうでもいいような微妙な処理を、バリエーション豊富に
とりそろえたライセンスフリーな何かって、どっかから一括で
手に入らんかな。
全部のソースコードで書く2,3行の処理をそれぞれ1行で済ませられたら、
楽になっていいなあと思うんだけど。
844デフォルトの名無しさん:2006/09/05(火) 14:26:46
module foo.2bar.baz;
import foo.2bar.baz;

数字から始まるフォルダを含むモジュール名を指定するとエラー出すけど、これって仕様、それともバグ?
そういう記述は見つかんなかったけど、確信はなし。
845デフォルトの名無しさん:2006/09/05(火) 14:29:34
>>844
仕様
ModuleDeclaration:
    module ModuleName ;
ModuleName:
    Identifier
    ModuleName . Identifier
Identifier:
    IdentiferStart
    IdentiferStart IdentifierChars
IdentifierChars:
    IdentiferChar
    IdentiferChar IdentifierChars
IdentifierStart:
    _
    Letter
    UniversalAlpha
IdentifierChar:
    IdentiferStart
    Digit
846デフォルトの名無しさん:2006/09/05(火) 14:36:03
847デフォルトの名無しさん:2006/09/05(火) 15:39:21
>>845-846
構文解析の方を見なきゃなんなかったのか・・・。
Identifierならしょうがないな・・・。

サンクス。
848デフォルトの名無しさん:2006/09/05(火) 23:21:47
opCall の使い所がいまいち分かりません!
class Foo {
static Foo opCall(){ return new Foo; }
}
とかでもやっときゃ良いんですか?
849デフォルトの名無しさん:2006/09/05(火) 23:39:31
>>848
>opCallの使い所
C++でいう関数オブジェクトとか。
まぁ、delegateあるからC++より使う幅狭いけど
850デフォルトの名無しさん:2006/09/05(火) 23:45:23
>>848
構造体の初期化をコンストラクタ風にしたいときとか。
851デフォルトの名無しさん:2006/09/06(水) 00:03:17
int x = 2, y = 1;
void main(){
int res = 0;
for(int i = 0; i < 10; i++){
res = res + x - y;
writefln(res);
}
}
これを最適化付きでビルドすると、間違った答えが出る件。
852デフォルトの名無しさん:2006/09/06(水) 00:39:48
>>851
res = res + (x - y);

ってやると正しい結果になりますね。
普段括弧多用するのでこういうのは気づかなかった…
853デフォルトの名無しさん:2006/09/06(水) 00:44:46
x, yをローカルスコープにしても直るみたい。
854デフォルトの名無しさん:2006/09/06(水) 01:01:58
ここにきてそんな基本的なバグが
855デフォルトの名無しさん:2006/09/06(水) 01:50:34
これじゃ、リリースは当分先になるなぁ・・
856デフォルトの名無しさん:2006/09/06(水) 01:56:11
やなバグだなぁ…
clでも昔似たようなのがあった気はするけど。
857デフォルトの名無しさん:2006/09/06(水) 15:58:23
>>851

Walterタン に、ご報告した?
858デフォルトの名無しさん:2006/09/06(水) 19:42:23
D言語パーフェクトガイドがどこにも売ってないよ(´・ω・`)
859デフォルトの名無しさん:2006/09/06(水) 19:51:23
860デフォルトの名無しさん:2006/09/06(水) 19:52:35
ほんとだ、売ってないね。
861デフォルトの名無しさん:2006/09/06(水) 20:55:38
D言語に関して2004年に書かれた本はもはや参考にならない
862デフォルトの名無しさん:2006/09/06(水) 20:57:39
>>861
この間、本屋に一冊あったから買っちゃった。

ところで、お勧めのD解説サイトってある?
863デフォルトの名無しさん:2006/09/06(水) 21:03:39
>>862
蜘蛛の巣しか無くね?
あとやねうらおさんのとか。若干情報が古いけど。
864デフォルトの名無しさん:2006/09/06(水) 21:06:50
近所のTSUTAYAで売ってると思うがなぁ
ないところにはないのか
865デフォルトの名無しさん:2006/09/06(水) 21:07:16
C++言語に関して1998年に書かれた本の内容がまだ実装されていない
866デフォルトの名無しさん:2006/09/06(水) 21:11:20
mixin周りってまだバグ多いんだな
private領域へのアクセスになるべきなのかならないべきなのかわからんけど
どっちかになるべきだよなこれ

template Foo()
{
 private int priv;
 public int pub;
}

class Bar
{
 mixin Foo F;
 this()
 {
  priv = 1;// error
  pub = 1;
  F.priv = 2;
  F.pub = 2;
 }
}

void main()
{
}
867デフォルトの名無しさん:2006/09/06(水) 21:21:50
>>848-850
opCallの用途ってそんなんしかないのか

interface State {
void onLButtonDown();}
class State1 : State {}
class State2 : State {}
class Context
{
 void onLButtonDown() {
  pre();
  onLButtonDown()
868867:2006/09/06(水) 21:22:26
ぐは
すまん
途中で送信してしまた
869デフォルトの名無しさん:2006/09/06(水) 21:37:23
まあそのなんだ
lazyは便利だという話
あるクラスの中において,ある処理の前後で必ず実行する定型処理があったら

void doSequence(lazy void doSomething)
870デフォルトの名無しさん:2006/09/06(水) 21:38:07
もうだめぽ orz
Janeはシフト+エンターで書き込みなのか・・・・・・・・・・・・・・・・ もういや・゚・(ノД`)・゚・
871デフォルトの名無しさん:2006/09/06(水) 21:44:56
>>863
すまんが、URLを教えて。
それらしきものが全然見つかんない orz
872デフォルトの名無しさん:2006/09/06(水) 21:47:13
863ではないが

>>871
http://www.kmonos.net/alang/etc/d.php
D MEMO

http://www.sun-inet.or.jp/~yaneurao/dlang/
やねうらおさんとこ
873デフォルトの名無しさん:2006/09/06(水) 22:15:54
>>872
え、
それの事だったのか。
勘違いスマソ
874デフォルトの名無しさん:2006/09/06(水) 22:23:35
>>872
その後者の方の
> デジタル火星の言語の周りを回る標準ライブラリは、その名も Phobos、火星の惑星です。標準でどんなものが用意されているか、見てみましょう。
これは指摘するべきだろうか。
875デフォルトの名無しさん:2006/09/06(水) 22:32:22
>874
前者でないの?

まあ、衛星だな。
876デフォルトの名無しさん:2006/09/06(水) 22:39:26
>>875
前者だな。ごめん。

な、衛星だろ?
877デフォルトの名無しさん:2006/09/06(水) 22:48:53
アメリカの惑星衛星探査機ボイジャー一号は、女子高校生の輪の下をくぐり抜けるように数々の写真撮影に成功
警察では公然猥褻の疑いもあると見て捜査をすすめています。
878デフォルトの名無しさん:2006/09/06(水) 23:07:29
>>874
修星しますた。thx
879851:2006/09/06(水) 23:08:29
>>857
してみようかと思ったけど、本家の方はほとんど見てないからよく分からないし、
英語力の無さからいっても無理そう。

880デフォルトの名無しさん:2006/09/06(水) 23:37:08
>>878
www
そんな細部だけ直さなくともw
881デフォルトの名無しさん:2006/09/06(水) 23:46:17
>>879
コード読んで、動かしてもらえばわかってもらえるはず。
俺も英語力は無きに等しいけど、意味は通じるんじゃないかな。

--
This code compiled with '-release -O' make a illegal calculation.

import std.stdio;

int x = 2, y = 1;

void main() {
int res = 0;
for(int i = 0; i < 10; i++) {
res = res + x - y;
writefln(res);
}
}

882デフォルトの名無しさん:2006/09/07(木) 00:15:28
なんでもっとシンプルな言語仕様にしないんだろ。
883デフォルトの名無しさん:2006/09/07(木) 00:38:46
>>882が考えているのと路線が違うからでは。
884デフォルトの名無しさん:2006/09/07(木) 00:52:48
>>882

Walterタンとおまえの方向性が違うだけ。
気に入らなきゃ他の言語を探すなり自分で作るなりをすればいいだけ。
885デフォルトの名無しさん:2006/09/07(木) 01:11:06
十分しんぷるだろ
886デフォルトの名無しさん:2006/09/07(木) 01:54:47
開発理念からだろ。
887851:2006/09/07(木) 02:50:34
>>881
何とかがんばってBugzillaに書き込んできた。
例文サンクス。
888デフォルトの名無しさん:2006/09/07(木) 06:55:10
Good job! (゚Ρ゚)b
889デフォルトの名無しさん:2006/09/07(木) 08:25:25

ttp://d.puremagic.com/issues/show_bug.cgi?id=326

>his error also occurs in DMC with similar code.

ってオイ!
890デフォルトの名無しさん:2006/09/07(木) 08:38:46
-release使うなってか
891デフォルトの名無しさん:2006/09/07(木) 08:51:00
バグの再現に' -release' は必用ないとゆーとるのでは?
892デフォルトの名無しさん:2006/09/07(木) 08:56:11
Only -O is needed for the bug.
-Oだけで再現できますよと言ってる?
893デフォルトの名無しさん:2006/09/07(木) 11:58:37
俺もためしたけど-Oだけで発症したよ。

 > -release isn't required. Only -O is needed for the bug.
 -releaseは要らないよ。そのバグに必要なのは-Oだけよ。
 > This error also occurs in DMC with similar code.
 DMCでも同様のコードでこのエラーが起きたよ。
あとの行はその人が調べたバグの起きる条件の詳細っぽい。

しかし怖いバグだな。
894デフォルトの名無しさん:2006/09/07(木) 15:19:52
Walterは内部の沢山の書き直しが必要とか言ってるけどidentifierに期待age

static foreachとか可変個引数テンプレートとかにも対応して早く以下のようなコードを書いてみたいものだなぁ…
template T(char[][] a...){
  interface Base(){
    void do();
  }
  static foreach(char[] b;a){
    class identifier(b):Base{
      void do(){
        writefln(b);
      }
    }
  }
}
mixin T!("test1","test2","test3");
895デフォルトの名無しさん:2006/09/07(木) 18:17:53
boostのpreprocessorに近いものかな
896デフォルトの名無しさん:2006/09/07(木) 23:56:53
テンプレートクラスをライブラリにして使おうとすると良くリンクエラーになるのだが。
普通にプロジェクト内の一ファイルとしてコンパイルするとうまくいくのに。
しょうがないから、mixinで丸ごとコードを持ってくるようにして対処してるけど、これってバグ?
897デフォルトの名無しさん:2006/09/08(金) 00:02:06
>>896
あ、それ俺もなるわ。
仕様とか、自分のやり方が違うのかと思って、
そういうライブラリ自体をコンパイルしてリンクしてたけど・・・。
バグじゃないにしてもコンパイルしないで使える方法とか知りたいです。
898デフォルトの名無しさん:2006/09/08(金) 00:23:35
Dは一回再編した方がいいとおもう。ごちゃごちゃしてきたし。

言語の設計だけやったら実装してくれる神はおらんものか。
899デフォルトの名無しさん:2006/09/08(金) 00:27:04
C++がごちゃごちゃしてきたので再編したんじゃなかったのかと
900デフォルトの名無しさん:2006/09/08(金) 01:59:50
俺は各機能の使い分けが難しくなってきたように思う。
同じような機能がたくさんない?

好みもあるだろうけど自分の場合lazyが増えたおかげでdelegateを使う場面が激減したよ。
C#のイベントハンドラのように、インスタンスにメソッドを連結するような用途ではdelegateを使わなくなった。

function pointerとdelegateはどっちかで十分ならどっちかに絞るのも手だと思う。
必然性があってそうなっているのかもしれないが・・・俺にはわからないや。
901デフォルトの名無しさん:2006/09/08(金) 02:05:19
イマイチ closure と function と delegate と 関数クラス の使い方のイメージの相違が分からない
呼ばれるなら一緒じゃないの?
(コンテキストを保存する意味ではdelegateは有用だと思うけど、じゃぁ他のは?とも思う)
902デフォルトの名無しさん:2006/09/08(金) 04:59:41
>>898
あなたが新世界の神となれば良いじゃないですか
903デフォルトの名無しさん:2006/09/08(金) 10:45:26
DMDの古いバージョンは、もう配布されていないのでしょうか?
904デフォルトの名無しさん:2006/09/08(金) 12:38:14
905デフォルトの名無しさん:2006/09/08(金) 12:39:09
dmdのリンク先URLから何かを察したり本家changelogさえ見たことすら無いのだろう。
906デフォルトの名無しさん:2006/09/08(金) 14:24:37
>>904-905
どうもです。changelogから取れました。
907デフォルトの名無しさん:2006/09/08(金) 15:05:09
>>900-901
・基本はdelegate。

・functionはdelegateより速い。あと""Cの関数ポインタと互換性がある""。
 でも外部スコープの変数を参照できない。

・lazyは""ちょっと記法が楽""なのだけが利点。
 引数をとれない。式しか書けない==文が書けない。変数として持ち回れない。

・関数クラス(opCallのあるクラスのこと?)は""opCall以外のメンバも持てる""けど
 delegateはcallすることしかできない。それ以外の点では逆にdelegateの方が汎用性高い。
908デフォルトの名無しさん:2006/09/08(金) 15:07:30
template property(T : float) {
  float property(inout float m_var, float var, lazy int range) {
    if(var == float.nan) { return m_var; }
    else {
      if(range()) { m_var = var; }
      return m_var;
    }
  }
}

class A {
  private float m_hoge=0.0;
  public float hoge(float hoge=float.nan) {
    return property!(float)(m_hoge, hoge, hoge>3.0 && hoge<8.0);
  }
}

void main() {
  A a = new A;
  for(float i=0.0;i<10.0;i+=1.0) {
    a.hoge = i;
    writefln(a.hoge);
  }
}

いまは反省している。
909デフォルトの名無しさん:2006/09/08(金) 15:27:20
DってNaNとNaNを==比較してtrue返す仕様なの?
910デフォルトの名無しさん:2006/09/08(金) 15:39:37
>>909
試せ

float a, b;
printf("%s", a==b);
911デフォルトの名無しさん:2006/09/08(金) 15:43:22
そういえば、>>910みたいな小さいコード試す時に -run 使うと幸せになれるよね。
-run なんて忘れてた。
912デフォルトの名無しさん:2006/09/08(金) 15:55:36
>>910
アホ、908への皮肉だボケ。
試さないとダメなのは908だ。

てか、そもそもお前がそのコード試せよ。
どうみてもSegment Faultだろ。馬鹿か。
913デフォルトの名無しさん:2006/09/08(金) 16:27:48
float property(inout float m_var, float var, lazy int range=true) {
if(!isnan(var) && range()) { m_var = var; }
return m_var;
}
914デフォルトの名無しさん:2006/09/08(金) 18:57:18
DWT使ってるとやたらとコンパイル遅くなるんだけどもこれはどうにもならないの?
915デフォルトの名無しさん:2006/09/08(金) 19:04:44
>>914

確かビルドオプションのどれか省略したらかなり高速になったような。デバッグがらみのフラグだったかな?
いまDWT入れてなくて確認できないですけど。
916デフォルトの名無しさん:2006/09/08(金) 19:45:30

import ファイルを .di にとか。
917デフォルトの名無しさん:2006/09/09(土) 00:45:06
>>902
ドラフトを作る程度までなら現役SEなんでなんとかやれるかと思うんですが、
コンパイラ理論がよくわからないもので、、
使う側の要望・メリットを仕様にまとめるってのならできるんですが、、
918デフォルトの名無しさん:2006/09/09(土) 00:47:09
>>917
じゃあ、試しに纏めてみせて
919デフォルトの名無しさん:2006/09/09(土) 01:08:23
いやコンパイラの理論がわからなかったらまとめられないっしょ
それに全部まとめなおさなくても気に入らないところだけ挙げてみればー
920デフォルトの名無しさん:2006/09/09(土) 09:13:33
>>919
そんなこと無いと思う。コンパイラの負担が無茶苦茶増える事はあると思うけど。
921デフォルトの名無しさん:2006/09/09(土) 09:44:45
DってJavaみたいなフレームワークはあるのですか?
922デフォルトの名無しさん:2006/09/09(土) 10:05:01
>>921
あなたが頑張ってくださいの世界です。
923デフォルトの名無しさん:2006/09/09(土) 10:59:11
がんばる
924デフォルトの名無しさん:2006/09/09(土) 11:03:16
>>919
教科書原理主義kt
925デフォルトの名無しさん:2006/09/09(土) 11:14:21
>>922
言語が安定してくれないとそっちに取り掛かれないんだよね。
926デフォルトの名無しさん:2006/09/09(土) 14:21:07
>>922
そんな実力ありません。
927デフォルトの名無しさん:2006/09/09(土) 14:24:24
今まで作った奴をかき集めたらなんかライブラリになりそうだけどやめとこ・・・
928デフォルトの名無しさん:2006/09/09(土) 17:22:56
こわがりすぎー
929639:2006/09/09(土) 20:27:49
>>653
Dのホームページのテンプレート再訪のところにあったTupleとFuncMetaを使って書いたらこうなった。

int delegate() counter(int n, int m){
auto tuple = makeTuple(n, m);
return closure(tuple, (inout typeof(tuple) t){
return t.val!(0)++;
});
}

RetType!(U) delegate() closure(T, U)(T tuple, U func){
struct Closure{
T tuple;
U func;
RetType!(U) closure(){
return func(tuple);
}
}
auto c = new Closure;
c.tuple = tuple;
c.func = func;
return &c.closure;
}

counter関数が毎回書く部分で、closure関数が一度書いておけばいい部分。
まあ、正直ここまでする価値があるかは微妙だけど。
930639:2006/09/09(土) 20:30:49
間違えた。こっちが正しい。

int delegate() counter(int n){
auto tuple = makeTuple(n);
return closure(tuple, (inout typeof(tuple) t){
return t.val!(0)++;
});
}
931デフォルトの名無しさん:2006/09/09(土) 21:54:45
Dでは10進演算器を言語でサポートする予定はないんでしょうか?
金勘定に使いたいと思うと、でっかいインテジャーでも使い勝手悪くて
結局ライブラリ作らないと駄目なんですけど。
932デフォルトの名無しさん:2006/09/09(土) 22:12:24
世界のGDPを銭単位で扱うつもりですか?
933デフォルトの名無しさん:2006/09/09(土) 22:18:55
>>932
小数点の扱いとか、切り上げ切り捨ての時にチョコチョコ操作してやらなきゃ
ならないんだよ。お金勘定系のシステム作ったこと無い人には、ピント来ないと
思うんだけどね。

で、その辺のチョコチョコしたことはまぁ、書けば良いし誰だって書けける程度の事だから
みんな書くんだけど、言語でサポートしててくれれば、安全で分かりやすく書けるのね。
934デフォルトの名無しさん:2006/09/10(日) 02:40:21
まぁ、端数切捨てモードを言語側で指定できたり有効桁数の設定ができると金の取扱いは楽だな。
935デフォルトの名無しさん:2006/09/10(日) 09:16:55
>>917
まだ纏まらないの?
936デフォルトの名無しさん:2006/09/11(月) 05:43:06
import std.stdio;
import std.cstream;
void main() {
  char[][] list;
  foreach(char[] line; din)
    list ~= line;
  foreach(char[] s; list)
    writefln(s);
}

実行すると、エラーになるのですが。これは何がいけないのでしょうか?教えてください。
937デフォルトの名無しさん:2006/09/11(月) 06:04:09
char[][]型 ~= char[]型をしようとしても困る

やりたいのは、これ?

foreach(char[] line; din){
list.length = list.length+1;
list[length-1] = line.dup;
}
foreach(char[] s; list)
writefln(s);
938デフォルトの名無しさん:2006/09/11(月) 06:15:37
>>936
StreamのopApplyで渡すバッファは、
ローカル変数だったり使いまわされてたりするのでdupが必要。
import std.stdio;
import std.cstream;
void main(){
    char[][] list;
    foreach(char[] line; din)
        list ~= line.dup;
    foreach(char[] s; list)
        writefln(s);
}
939937:2006/09/11(月) 06:26:57
ごめん勘違いしてたのでスルーして
940917:2006/09/11(月) 11:39:47
コンセプト的なハナシからすると、

プリミティブな変数型を排除して純粋なオブジェクト指向にする。

public class TestMain {
  public static void main(string[] argrs) {
    string a = "aaa";
    if(a == "aaa") {
      printf("ok\n");
    }
  }
}

リテラル型のデータはそれぞれ対応したクラス型を持ったオブジェクトとして扱う。
オブジェクトは全て参照渡しを原則とする。
オブジェクト同士の比較する際には比較演算子==を使用するが、この場合に限り値よる比較を行う。
参照の同一性を調べる場合には

ExemplaClass ec = new ExampleClass();
ExemplaClass ec2 = new ExampleClass();

if(ec.reference == ec2.reference){
  //
}

としてreferenceプロパティの結果を比較する。

---------------------------------------------
ていうようなメモの蓄積でよければどっかにwiki作ってやってけそうですが、、
941デフォルトの名無しさん:2006/09/11(月) 12:39:25
おながいします
942デフォルトの名無しさん:2006/09/11(月) 12:51:21
別スレでね
943デフォルトの名無しさん:2006/09/11(月) 23:15:05
>>940
とりあえず、その思想をDに適用するのは糞だと指摘しとく。
「純粋なオブジェクト指向」なんて、まさに「言語の上っ面の設計だけ」したい奴の常套句。

プリミティブ型を排除してもさほど便利にはならない。
それなのに実行速度は激しく落ちる。そんなアホな方向性は絶対ダメだ。
944デフォルトの名無しさん:2006/09/11(月) 23:58:36
>>940
それじゃ文がCっぽいNativeなRubyになる。
Rubyがだめとは思わないが、そんな中途半端な言語はちょっと勘弁して欲しい。
あとは >>943 と同意。
945デフォルトの名無しさん:2006/09/12(火) 00:03:49
>>940
Java以外の言語の設計思想を知らんのじゃないか?
946デフォルトの名無しさん:2006/09/12(火) 00:09:14
>>940
スモールトーク?

後、言語の大枠の話と、いきなり演算子の表記の仕方を同列に
語ってるのも痛い。

己を知れって感じ。
947デフォルトの名無しさん:2006/09/12(火) 00:12:10
コンパイラ理論を知らなくても、言語の設計は出来ると思うけど、
言語を知らないのに、言語の設計は出来ないと思う。
>>940がシステム作ってるとか思うと、本当にユーザーさんが
可哀想だと思う。
948デフォルトの名無しさん:2006/09/12(火) 00:46:24
>>940
> プリミティブな変数型を排除して純粋なオブジェクト指向にする。
メリットを言ってみて。
949デフォルトの名無しさん:2006/09/12(火) 00:49:09
>>940の人気に同情・・・
950940:2006/09/12(火) 01:24:23
皆さんのアツいレスは純粋にうれしいです。
自分はWeb系なんで他分野の方と感覚に大きなギャップがある事を見落としてしまいました。

確かに先の提案とDの思想では相反する事があるかもしれませんが、
本気で現場で使える言語にするなら人によってクセの出るような言語仕様ではいけません。
1プログラマのオナニー以上の存在になるにはもっとゼネラリストにスポット当てる事が重要です。

具体的には、
ある機能に対して言語を正規化して1つの事をやるには1つしか選択肢がない事が望ましいです。

組み込みの人には申し訳ないですが、
もはや職人芸に頼った成果は敬遠されてきてます。

パフォーマンスの事にしても、
Webの世界ではこの手の問題が出る時っていうのは
クライアントから金がむしりとれる絶好のチャンスなんですね。

なのでできるだけ小さい言語マニュアルで、
ライブラリのドキュメントさえ読めばすぐに使えるような環境を用意する事、
コードの集合体であるライブラリは疎結合を重んじる事、
サービスを中心に可能な限り抽象化したレイヤで要件が実装できる事。

これらを言語レベルでプログラマに押し付ける事ができればJavaを置き換える事も可能なのではないでしょうか。

951デフォルトの名無しさん:2006/09/12(火) 01:28:06
表記と、その表記が表す意味のどちらかを矛盾なくつなげればいい
あとは他人がイイと思うかどうかだぽ
気にするな
952デフォルトの名無しさん:2006/09/12(火) 01:39:38
>>950
言い訳いらないから、まとめてみろよ。
言語の仕様ってのは、http://www.digitalmars.com/d/index.html
このサイトに書いてること全部が最低限だと思ってれば間違いないから、
これだけの定義を矛盾無く書いてみろよ。グダグダ言い訳するのはそれから。
書けるまでももうこのスレに来るな。スレ違いだ。
953デフォルトの名無しさん:2006/09/12(火) 01:57:14
>>950
> ある機能に対して言語を正規化して1つの事をやるには1つしか選択肢がない事が望ましいです。
現実的な言語であるD言語の主張によると、「なにごとにも例外があります」だそうです。
現実を例外なしのすっきりした規則でくくりだすことはできないっつーことですね。
表現できる世界が余計に狭くなるか、余計に複雑になります。

言語的な綺麗さで括り出すことによって取りこぼされがちな数多の例外を、
プログラマレベルで取り繕う羽目にならないように言語仕様に収めたものが、
D言語の理想だと思います。
 > ある機能に対して言語を正規化して1つの事をやるには1つしか選択肢がない事が望ましいです。
というような厳しい制約は、汎用のプログラミング言語としては不適切なものです。
なぜなら、先に述べたように「表現できる世界が余計に狭くなるか、余計に複雑に」なるからです。

ある目的に特化した、つまり用途や環境を絞った言語ならばシンプルで綺麗な規則の
言語を設計できるのかもしれません。しかしD言語のような汎用の言語は、専用言語
のようにカバー範囲を狭くしたり単純にしたりすることで言語の綺麗さを得るのは、
かなり慎重にする必要があるでしょう。すくなくとも、
 > ある機能に対して言語を正規化して1つの事をやるには1つしか選択肢がない事が望ましいです。
というようにばっさりやってしまうのはかなりの判断ミスだと思われます。

汎用の言語と、それによってカバーされるプログラムの世界の広さをもっと具体的かつ
実際的にまとめあげてからでないと、そのような未だない綺麗な言語を設計することが
可能であると主張することは難しいと思います。説得力の点で。
954デフォルトの名無しさん:2006/09/12(火) 01:59:28
>>950
「言語の上っ面の設計だけ」したい奴って言われたくなかったら、
もうちょっと納得のいく言い訳言ってみて。
955940:2006/09/12(火) 02:02:26
Javaのキモい部分だけ取り除けばそれなりにいい感じになりそうだけど。
とりあえずスレ違いなんでどっかのwikiに移動します。
さようなら。
まとまったらリンクだけここにはっときますね。
956デフォルトの名無しさん:2006/09/12(火) 02:05:07
>>955
> キモい部分だけ
という発言が「上っ面」といわれる所以になってるのに気づけ
ノシ
957デフォルトの名無しさん:2006/09/12(火) 02:09:40
>>950
本来はプログラミング言語はメタ言語なんだから、
「ある言語で何かを表現したら、何かの意味を示している」
じゃなくて
「何かの意味を表現するために、ある言語で何かを表現している」
じゃん

だから
> 本気で現場で使える言語
とか
> パフォーマンス
とか
> できるだけ小さい言語マニュアル
とか
> ライブラリのドキュメントさえ読めばすぐに使える
とかいう表面の話で終わってるのがつらいね
958デフォルトの名無しさん:2006/09/12(火) 03:35:06
今のオブジェクト指向言語ってデータ(オブジェクト)を大事にしすぎてると思う。
理想的にはコードとデータが等しい価値観をもつといいと思うけどLispは流行る気がしないし。
とにかくオブジェクトっていうデータ主体整理方法があるなら、
コード主体整理方法があってもいい良いきがするんだよねえ。
959デフォルトの名無しさん:2006/09/12(火) 03:46:25
(lil゚Д゚)その発想はなかった
OOPはデータ中心じゃないぞ
960デフォルトの名無しさん:2006/09/12(火) 06:58:22
それはともかく

誰かそろそろ新スレよろ
961誰か:2006/09/12(火) 07:27:11
次スレです。どうぞ。

D言語 Part10
http://pc8.2ch.net/test/read.cgi/tech/1158013550/
962デフォルトの名無しさん:2006/09/12(火) 08:44:02
>>958
oopを全然理解してないやん。
まずちゃんと学習してから妄想しようね。
963デフォルトの名無しさん:2006/09/12(火) 10:05:56
>>959
c++からOOP入ってるから構造体の中に関数入れているってイメージが強いのかも。
世の中もアルゴリズムよりデザインパターンみたいな風潮になっている気がするし。

>>962
色々勉強した結果にOOPはデータ主体のプログラム整理術だと結論づけたんだけど。
一言で否定されると悲しいな。
964!= 963:2006/09/12(火) 11:37:25
>>959 >>962
OOPって何か説明してくれない?
965デフォルトの名無しさん:2006/09/12(火) 11:46:05
OOPとは何かを語れる能力 ⊃ ある事例AがあってAはOOPに属さないと指摘できる能力
966デフォルトの名無しさん:2006/09/12(火) 11:52:50
複数形だとオットットってやつ
967デフォルトの名無しさん:2006/09/12(火) 12:18:33
そんなわけで >>963 は気にしなくてもいいと思われ
968デフォルトの名無しさん:2006/09/12(火) 12:55:24
>>966
ワロタ
969デフォルトの名無しさん:2006/09/12(火) 14:16:19
OOPなんて、所詮
>データ主体のプログラム整理術
程度のものだろ
まあ、Java信者はそれじゃゆるせないみたいだけど
970デフォルトの名無しさん:2006/09/12(火) 14:20:16
いや、JavaでOOP語られてもなあ。
971デフォルトの名無しさん:2006/09/12(火) 15:32:25
Javaは「デストラクタのないC++」への道を突き進む暴走特急
972デフォルトの名無しさん:2006/09/12(火) 16:01:35
>>971
何か問題がありますか市民?
973デフォルトの名無しさん:2006/09/12(火) 19:27:00
>>972
何も問題無いんですか市長?
974デフォルトの名無しさん:2006/09/12(火) 20:50:35
Javaはプリミティブ型のために純粋なOOしてないとよく言われますが
975デフォルトの名無しさん:2006/09/12(火) 21:18:30
スレ違い
976デフォルトの名無しさん:2006/09/12(火) 21:44:32
次スレ立ったみたいなんで
とりあえず埋めますか
977デフォルトの名無しさん:2006/09/12(火) 22:12:39
あなたのエッチなソースみせてください。
978デフォルトの名無しさん:2006/09/12(火) 22:13:08
OOPなんて所詮とかいう人に限ってプログラムが流れ作業だと思っているに違いない
979デフォルトの名無しさん:2006/09/12(火) 22:36:38
全てがオブジェクトじゃないとゆるせない人乙w
980デフォルトの名無しさん:2006/09/12(火) 23:18:08
OOPマンせーなひとって、OOPで何でもモデリングできちゃうって思ってるわけでしょ?
なんか、かなり視野せまくね〜? つうかウサンクセ〜
981デフォルトの名無しさん:2006/09/12(火) 23:29:51
なんか急に釣り針が増えたな
982デフォルトの名無しさん:2006/09/13(水) 00:27:05
>>981
ああ。うっかり飲みこむところだったぜ・・・アブネェアブネェ
983デフォルトの名無しさん:2006/09/13(水) 00:38:33
   ∩___∩     /
   | ノ      ヽ  /
  /  >   < |/ そんな餌パクッ
  | //// ( _●_)/ミ
 彡、     l⌒l  ノ
 / __  \ \ヽ
. (___)   \__)
. O|       /
  |  /\ \
  | /    )  )
  ∪    (  \
        \,,_)
984デフォルトの名無しさん:2006/09/13(水) 00:45:47
うまそうにくいやがる
985デフォルトの名無しさん:2006/09/13(水) 00:53:18
次スレ立ったみたいなんで
とりあえず埋めますか
986デフォルトの名無しさん:2006/09/13(水) 02:27:06
987デフォルトの名無しさん:2006/09/13(水) 05:05:12
小梅ちゃん
988デフォルトの名無しさん:2006/09/13(水) 08:51:11
977には釣られてもいいと思うんだ
989デフォルトの名無しさん:2006/09/13(水) 09:16:57
.hなソースはありません。
該当するC/C++スレに移動してください。
990デフォルトの名無しさん:2006/09/13(水) 10:27:08
えっちなのはいくないと思います
991デフォルトの名無しさん:2006/09/13(水) 12:52:50
>>973
ZapZapZap!!
992デフォルトの名無しさん:2006/09/13(水) 14:21:00
次スレです。
D言語 Part10
http://pc8.2ch.net/test/read.cgi/tech/1158013550/
993デフォルトの名無しさん:2006/09/13(水) 15:57:54
以降、モナドについて語る。
994デフォルトの名無しさん:2006/09/13(水) 15:59:14
ありゃ〜おいしいねぇ〜
995デフォルトの名無しさん:2006/09/13(水) 16:14:27
あっちはへんなのがわいてる
996デフォルトの名無しさん:2006/09/13(水) 17:14:17
次スレが痛いのでつ。
997デフォルトの名無しさん:2006/09/13(水) 17:28:18
1000だったらF言語登場
998デフォルトの名無しさん:2006/09/13(水) 17:33:44
Eは無視かよ
999デフォルトの名無しさん:2006/09/13(水) 17:38:12
1000?
1000デフォルトの名無しさん:2006/09/13(水) 17:40:38

            *'``・* 。
            |     `*。
           ,。∩      *
         +  <`∀´> *。+゚
         `*。 ヽ、  つ *゚*   イルボンになる魔法を〜♪
          `・+。*・' ゚⊃ +゚
          ☆   ∪~ 。*゚
           `・+。*・
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。