[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 08/05 11:17 / Filesize : 219 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

D言語 Part15



1 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 20:16:30 ]
プログラミング言語 D (D Programming Language) について語るスレッドです。
過去スレは >>2

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

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

■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://dsource.org/ (dsource)
ttp://www.sun-inet.or.jp/~yaneurao/dlang/
ttp://wisdom.sakura.ne.jp/programming/d/

577 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 16:35:25 ]
DってなんかSchemeっぽくね?

578 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 16:38:52 ]
>>577
pure関数の導入も予定してるし、関数型的に行く気まんまんという感じ。

579 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 16:43:24 ]
クローじゃきたのかー D2はじまったな

580 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 16:59:14 ]
クロージャの実装ご苦労じゃ。

581 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 17:04:34 ]
1.0 に組み込む気は無いのかなぁ。
発展途上というかバグだらけなうえに仕様が迷走してるだけに
2.0はまだ使う気にならんのだよな。

582 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 17:15:52 ]
>548の問題が、自分の用途に関して一時的解決策ができた。

enum FooEnum {}
class Foo {
alias .FooEnum FooEnum;
}

class BarA(T : FooEnum){} // NG


これで目的は果たせるけど、きっちりしておきたいところではある。

583 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 17:19:01 ]
1.0にくみこまれたら組み込まれたらで
仕様が迷走してるっていうんじゃね?

584 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 17:21:02 ]
1.0はもう変わっちゃだめだろ

585 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 17:27:31 ]
>>557
このあたりと関係してるかも
ttp://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=58483



586 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 17:28:08 ]
>>578
pure関数入れるとどうなるんだろう

>>581
ちょっと待てw
0.xのときは早く安定させてって言われてたから1.x系作って安定させたんだろうに
ちゃんと進んでるぜよ

587 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 17:53:53 ]
1.x系は無難な過去の寄せ集め。
2.x系は未来への布石。

俺ってかっこいい!?

588 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 17:54:41 ]
むしろ世紀末への布石

589 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 17:56:45 ]
え?おわっちゃうの!?

590 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 18:32:00 ]
Dが完成するときは、世界の終わりの日だということか。

591 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 18:33:06 ]
>>589
90年先を見据えた言語ってことさ

592 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 18:35:53 ]
じゃあ・・・配列演算と並列処理まだー?

593 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 18:57:13 ]
pure関数が実装されると、コンパイル時に自動的に実行とかやってくれるのかな?
それか、結果のキャッシュかな。

とりあえずたらい回しが速くなる?

594 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 19:03:06 ]
>>591
おぉ!かっこいいね!!

595 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 19:11:53 ]
>>580
>>580
>>580



596 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 19:54:14 ]
あえてスルーしてたのに、、、

597 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 20:26:16 ]
すでにコンパイル時関数実行ってあるよね

598 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 20:56:56 ]
sin,cosがそうなってると、このスレだったかで見たような記憶がある。

599 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 21:13:05 ]
sin,cosは組み込み関数でコンパイラがコンパイル時に定数に置換するだけ。
CTFEの一種であることに変わりはないが。

600 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 21:29:50 ]
D言語SUGEEEEEEE

601 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 21:57:31 ]
むきー!!
modfをfmodの代わりだと思って使ってた間抜けがきましたよ。っと。
なんて紛らわしいんだ。

602 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 22:01:04 ]
(^Д^)m9

603 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 22:07:24 ]
>>602
右手が右側にwwww

604 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 22:12:54 ]
これはきっと「カマーン」って言ってるんだな

605 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 22:21:52 ]
左側だろ



606 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 22:23:56 ]
腕の力こぶを見せ付けてるんだろう

ぶよぶよ贅肉にも見えるが

607 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 22:24:56 ]
>>605
本人から見ればそうだな。

608 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 22:27:12 ]
小指立ててるだけだろ。

609 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 22:33:02 ]
循環import(AがBをimport、BがAをimport)って許されてない?

普通にコンパイルするときは問題ないんだけど、
コードカバレッジ解析(-cov)を有効にするとエラー出る。

Error: circular initialization dependency with module A

610 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 22:45:15 ]
www.kmonos.net/alang/d/module.html
静的コンストラクタの順序
import宣言の循環(モジュールがお互いをimportしあう、循環依存)は、 どちらか一方が静的構築の不要なモジュールであれば、問題ありません。 双方とも静的構築が必要であった場合は、 実行時例外が発生します。

611 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 22:52:37 ]
-covつけると静的構築されるの?

612 名前:566 mailto:sage [2007/11/03(土) 22:54:28 ]
>>568
thx!
無視して先に進みます

613 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 22:55:50 ]
静的構築が行われていないモジュール同士なんだけどなぁ〜
問題なく実行はできるし・・・

614 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 22:58:24 ]
おそらく、カバレッジ解析用のコードが追加されてエラーになるんだろうな。
バグだろバグ

615 名前:610,613 mailto:sage [2007/11/03(土) 23:03:15 ]
>>614

そう思う。バグだよねぇ〜。
それならそれでいいんだ・・・
D言語の思想に合ってないコーディングをしているのかと少々疑ってしまった。



616 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 23:03:48 ]
-cov つけるとコンパイラがそれぞれのモジュール内に静的コンストラクタを挿入するって事?

617 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 23:04:56 ]
かぶった、すまぬ

618 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 23:08:54 ]
もし>>616ならそうそう解決されないんじゃね?
それに元々循環importは推奨されてないんじゃなかったっけ?
どっかで見た気がしてて>>610見るまで循環importやったらダメだと思ってたけど・・・
記憶違いならスマソ
どっちにしても循環しないようにしたらいいとおもた

619 名前:609,613,615 mailto:sage [2007/11/03(土) 23:19:02 ]
>>615
610,613→609,613 間違えた。すまぬ。

>>618
>どっちにしても循環しないようにしたらいいとおもた
えぇ。循環したいよぉー

620 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 23:27:37 ]
循環するほど密接してるんならもしかしたら一つのファイルにまとめるべきなのかもねえ

621 名前:609 mailto:sage [2007/11/03(土) 23:40:38 ]
>>620
その通りですね。

622 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 23:48:57 ]
>>618
モジュールコンストラクタがある場合に循環依存できないって制約は、
初期化順序を一意に定めるためのものであって、
循環依存自体に何か問題があるわけじゃないと思う。

コンパイラが挿入するカバレッジ解析コードに
モジュールごとの初期化順序が何らかの影響を及ぼすとは考えづらいから、
やはりバグだと思う。

623 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 00:09:52 ]
class Hoge {
int opProperty(string key, int val) {
return 0;
}
}
auto hoge = new Hoge;
hoge.test = 22; // どうにかして => hoge.opProperty(test, 22);

こんなキモいことできないかなー

624 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 00:11:58 ]
妄想乙

625 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 00:16:28 ]
>>623
それってさ、opPropertyの中で、keyとvalに応じて分岐とかするの?
それなら普通にメンバ関数の方がいいでしょ。

単にメンバ変数に値を設定するだけならテンプレートで増殖させるとかできるし。




626 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 00:18:40 ]
>>623
opIndex(string key, int val)ってしてhoge["test"]=22で良くね?

627 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 00:19:38 ]
ミスった。opIndexAssignね。

628 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 00:22:46 ]
ーにかした

ソースの外見をきにしてしまったアホだった/(^o^)\

629 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 00:24:03 ]
雪駄下駄を書くのが面倒くさいだけなら、わなDのサンプル

template attr_reader(T, string name)
{
mixin( "private T _" ~ name ~ ";" );
mixin( " public T " ~ name ~ "(){ return _" ~ name ~ ";}" );
}

class Point
{
mixin attr_reader!(int, "x");
mixin attr_reader!(int, "y");

this(int ix, int iy) { _x=ix; _y=iy; }
}

で十分。
でも、普通に書いた方がいいと思うぞ。

630 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 00:27:39 ]
ドキュメント生成用のコメントつけられなくなるしなー。

631 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 00:39:49 ]
きもさを追求するなら、opAutoload導入して欲しい。

632 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 01:48:16 ]
本からパクッた!あ。いや、参考にして、タートルグラフィック実装してみた。
アーカイブの中に結果画像入ってる。
これぞ、コンピュータグラフィックってかんじで面白いね。

windows専用です。
www9.uploader.jp/dl/sukiyaki/sukiyaki_uljp00004.zip.html

633 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 01:58:08 ]
ゲッタとか雪駄とかって他のC系列では自分で生成できないからすげーあこがれてたんだぞ。
それをこんなむげに扱いよって。ぷんぷん。






え?ビーム??でないよそんなの。

634 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 02:10:27 ]
ですよねー

635 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 04:02:59 ]
プロパティの += とか -= とかなんで許可してないんかね。

array.length += 2;

ってやったら

array.length = array.length + 2;

って変換してくれりゃ良いだけなのに。
演算子オーバーロードとの競合を防ぐため?




636 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 04:14:42 ]
将来的にはできるようになる予定とかどっか書いてなかったっけ。

637 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 04:31:27 ]
D言語は糞だから期待しちゃだめ

638 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 04:52:39 ]
ruby式だー

639 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 05:01:50 ]
>>635-636
もう忘れてるんじゃないのw

640 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 06:49:24 ]
をるたんももしかしたら
各自array.length = array.length + 2;ってかけばいいのに
とかおもってたりは・・・ないか

641 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 11:09:39 ]
をるたんも実はarray.length += 2;って書けたらいいなあ、とか思ってる。

642 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 11:27:39 ]
でも現実的に割に合わない面倒なことだなあ、とも思ってる

643 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 12:39:51 ]
そんなしょうもないもの実装してる暇があったらマクロ実装してやんよ!
と思ってるに違いない。

644 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 12:44:59 ]
ほんとだな?

645 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 16:16:42 ]
くろーじゃー!



646 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 17:35:53 ]
でも対称性の点から見てもあってもいい機能だよな常識的に考えててててて

647 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 19:14:06 ]
D2 の構造体/クラスの配列で sort しても opCmp 呼ばれなくなってね?

648 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 22:12:35 ]
どうも吐くアセンブラがバギーな感じ

649 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 22:31:11 ]
D2おもしろんだけど、コンパイラがバグだらけで使い物にならんな…

650 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 22:41:14 ]
ttp://www.sun-inet.or.jp/~yaneurao/dlang/Chapter-03.html#030400000000
このVSつかうデバッグできてる人いますか?
VS2005でやってみたけど、どうもうまくいかないです

651 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 22:52:32 ]
>>648
delegateまわりがとくに
closure関係だろうな

652 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 23:21:18 ]
void main(){
A!(int) a;
a.f();
}

struct A(T){
T t;

A!(A!(int)) f(){
A!(A!(int)) a;
return a;
}
}
これってやっちゃいけないことなのかな。
エラーになる。
Aをコンテナとして、リストのリストと言う具合に、
入れ子にするのは良くあることだと思うのだけど。

653 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 23:46:58 ]
>>652
A!(A!(int)) をtypedefしたりなんやらしてたらDMDが無限ループに入っちまった。
怖い怖い

654 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 00:05:24 ]
>>652
普通に無限ループしないか?
テンプレートをインスタンス化すると、その内部のテンプレートがインスタンス化され、
さらにその内部のテンプレートがインスタンス化され、、、




655 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 00:09:45 ]
>>647
2.003と2.007の動作は同じよう。変化なかったよ。
1.023と2.007の動作はぜんぜん違った・・・

要素3つの配列をソートするだけの処理で・・・
1.023は、配列初期化時にopCmpを20回、ソート時に3回呼び出してる。
2.007は、配列初期化時にopCmpを3回、ソート時には呼び出しなし。

2.007は降順で1.023は昇順という大きな違いが←既知事象?




656 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 01:11:38 ]
gdcって1.020までしかないの?
だめじゃん

657 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 01:35:23 ]
あった・・・
なんで最新のやつをでかでかと表示したりしないんだろ

658 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 01:39:02 ]
>>654
最終的にはintで止まるはずだから、無限ループはしなさそうだけど
C++でやってみたら大丈夫だったし

659 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 02:06:12 ]
え、Dって末尾再帰最適化してんの

660 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 02:46:11 ]
なぜ突然「末尾再帰最適化」?
関係ないだろ

661 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 03:53:51 ]
そういえばDって無限リスト書けんのかな

662 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 04:03:57 ]
それっぽいものなら何とでもかけると思うが。

663 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 12:07:40 ]
クロージャが来た記念ってことで、遅延リストを作って遊んでた俺。
でも、lines :: [char] -> [[char]]が書けなくてショボーン。
getContentsとか、zipWith使ってフィボナッチとかはできたお。

664 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 12:39:25 ]
>>658
考えてみてもintで止まるということがよく分からんかった。
A!(int)はA!(A!(int))型戻り値の関数を持ち、
そのA!(A!(int))型はA!(A!(A!(int))))型戻り値の関数を持ち、…
となるように思える。(intから始まって、止まらない)

A!(int)の実体化中にA!(A!(int))を実体化しようとすると、
無限リストよろしく永遠に型の実体化が終了しないんじゃなかろうか。

で、A!(A!(int))の実体化のタイミングをA!(int)の定義後にしようと思って
struct A(T){
T t;
A!(TA) f(TA=A!(T))(){
A!(TA) a;
return a;
}
}
としてみたけど、それでもコンパイラ様は再帰展開だとおっしゃる。

で、小手先の変更として f(TA=A!(T))() を f(TA=typeof(this)) と変えてみたら
dmdがsemantic3でオチタ\(^o^)/

665 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 13:19:30 ]
くそー2.007おもしろそうなんだが、前のプログラムが動かん・・・
今まで追い続けたんだけど、今回は2.006にもどすよ。。。
>>663
面白そうな雰囲気
まったくわからんおいらに説明おねがいします



666 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 13:41:58 ]
>>664
よく見ようよ。
A!(A!(T))だと確かにとまらないけど、上のコードはA!(A!(int))。
どう見ても有限の展開しかしない。
単に動かないのはdmdのバグでしょ。

667 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 13:46:10 ]
class List(T) {
static List!(List!(T)) listOfList() {
return null;
}
}

alias List!(int) t;

668 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 13:59:06 ]
>>666
なるほど、A!(A!(int)).fの戻り値型はA!(A!(int))そのものになるのね。

669 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 15:35:01 ]
単純にA!(A!(int))を展開しようとしたらまたA!(A!(int))が展開されて・・・という話ではないの?

670 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 15:55:09 ]
同じテンプレート引数では一回しか実体化されないはず。

671 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 16:11:39 ]
あーそうだった
俺ショボスwww

672 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 16:47:13 ]
実装しだいでは、A!(A!(T))でも大丈夫だと思う。
なんせ、C++ではこれが正常に動くのだから。
C++でできることはDでもできてほしい。

using namespace std;

template<class T> struct A{
T t;

A<A<T>> f(){
A<A<T>> a;
a.t.t = 2;
return a;
}
};

int main(){
A<int> a;
A<A<int>> b = a.f();
cout << b.t.t << endl;
return 0;
}


673 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 18:04:20 ]
久々にスレの勢いを見てみたら、
この板ではC/C++, Javaについで3番手だということに気づいた。
PerlやJavaScriptやPHPはここではない場所でやってそうだが、
それでもずいぶん上に来たものだ。

674 名前:663 mailto:sage [2007/11/05(月) 18:24:56 ]
>>665
Haskellに標準搭載されてる遅延リストを、Dでどれだけ実現できるか、という試み。
実行コストが高いから実用性は無くて、お遊びでしかないけど。
ttp://www9.uploader.jp/dl/sukiyaki/sukiyaki_uljp00005.zip.html
ここに上げたから、詳しくはこれを見てみて。

linesとgetContentsとzipWithは、Haskellにある関数。
linesが書けないのは>>652がエラーになるせい。

675 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 18:31:51 ]
>>673
ウォルたんから新ネタがどんどん届くからな
間違いなく勢いはある



676 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 18:47:32 ]
クロージャが入ってからの勢いがものすごいだけで、普段はそんなにすごくないんじゃないかな。

677 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 19:01:11 ]
C++インターフェースのときもすごかったよね。

>>773
をををっありがとうございます
拝見します

678 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 19:04:44 ]
replace( D言語Part15[677], `>>773`, `>>674`);
//ごめんなさい

679 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 19:21:49 ]
ぬるぽ

680 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 20:04:12 ]
俺はマクロくるまで冬眠

681 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 21:04:15 ]
そう言って冬眠したのはもう三人くらいいるようなw

682 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 21:10:47 ]
俺の理解度は置いといて!他の人のコード読むと楽しいな!!
なんかね、久しぶりに心から「へぇ〜」っていっちゃった。

やっぱ、ネットはこうでないと。




そうそう、俺タートルとかやってた奴ね。


683 名前:682 mailto:sage [2007/11/05(月) 21:13:27 ]
混乱避けるつもりが紛らわしく。。。
俺-> >>682だけね。

684 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 21:22:04 ]
>>682はもうちょっと落ち着いてもいいと思う
やけに楽しそうだw

685 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 21:44:05 ]
getenv("CONTENT-LENGTH").toInt()
とかはちょっとニヤリとしてしまう



686 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 21:51:41 ]
俺は予想外にもクロージャ来たから冬眠からさめちまった

687 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 22:23:48 ]
CGIっつーかAjaxっつーかweb開発用のフレームワークってありますか?


688 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 22:32:07 ]
なんか、あったような気もするけど、古いかもなあ。

689 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:01:15 ]
自己を動的に派生クラスに書き換えるモデルを考えて、
以下のようなコードを組んでみたのですが、失敗しました。
そもそも自己を動的に派生クラスに書き直せるのかちょっと疑問になったのですが、
こういうことは可能なのでしょうか。

class Hoge {
this() {}
void rewrite() {
this = new Huga;
}
}

class Huga : Hoge {}

void main(){
auto a = new Hoge;
a.rewrite;
writefln(a);  // -> Hoge
}

690 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:02:37 ]
>>687
sakuraiさんがずっと前に作ってなかったっけ

691 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:12:28 ]
>>689
変数aのアドレスなり参照なりがわからないと無理でしょ。
メモリのインスタンスが存在する部分を書き換えるわけにはいかないから、
変数aが指しているものを書き換えるしかない。

692 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:17:57 ]
仮想メソッドを直接書きかえ・・・いやなんでもないです

693 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:18:58 ]
できてしまった
import std.stdio;
class A{
void change(ref A a){
a = new B;
}
}
class B : A {}
void main(){
auto x = new A;
writefln(x); // a.A
x.change(x); // a.B
writefln(x);
}


694 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:21:26 ]
コメント書くところ間違えた
あとインデント見やすく
import std.stdio;
class A{
 void change(ref A a){
  a = new B;
 }
}
class B : A {}
void main(){
 auto x = new A;
 writefln(x); // a.A
 x.change(x);
 writefln(x); // a.B
}

695 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:26:15 ]
this ってメソッド呼ばれる時にインスタンスのポインタを値渡しされたただの隠しパラメータだからな。
だから、this をいくら書き換えても呼び出し元の変数(ポインタの値)は変わらないまま。
this が元から lvalue にならなきゃ混乱しないのに。



696 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:31:15 ]
>>692
求めているものは仮想メソッドの動的書き換えで、
かつオーバーロードできればいいなあという感じ(なのでデリゲート不可)で、
それが理想なんですが、さてどうしたものかと。

>>691 >695
なるほど。。少し分かってきました。
この辺を突破できるトリックをぼちぼち探してみます。

697 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 00:10:16 ]
>>694
ひとまずこれベースで行ってみます。
ありがとうございました。

698 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 01:03:34 ]
っステートパターン
って言ってみる

699 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 01:37:40 ]
D言語を使うからにはもっとトリッキーな手法をとるべきではなかろうか。

700 名前:デフォルトの名無しさん [2007/11/06(火) 01:57:34 ]
D言語は糞

701 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 02:31:15 ]
>>697
Has-a使ってやってみるのは?
ttp://www9.uploader.jp/dl/sukiyaki/sukiyaki_uljp00006.zip.html

なんでこの線路 .d がアップロードできんのん?

702 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 03:39:17 ]
なんか8スレ目ぶりくらいにアンチを見た。

703 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 04:43:04 ]
dupと[]って書き方以外になんか違うところあるの?

704 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 08:01:51 ]
>>703
dupは複製される。[]はされない。

int[] x = [1,2,3];
int[] y = x[];
y[0]=999;
writefln(x); // 999 2 3 (y=x.dupなら1 2 3)

705 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 08:35:14 ]
クロージャがくると、coroutineがもうすぐできる
という夢をみた



706 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 13:49:41 ]
>>703
[]は配列全体のスライス。
dupはミュータブルな複製。
したがって、型が違う場合がある。

static assert(is(typeof("foo") == invariant(char)[3]));
static assert(is(typeof("foo"[]) == invariant(char)[]));
static assert(is(typeof("foo".dup) == char[]));

707 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 14:57:39 ]
ここまで試してみた結果のまとめ

・自己インスタンス書き換え
 外部の自身を指すポインタのアドレスを渡す必要がある=複数あった場合は厄介
 newでコンストラクタを呼び出すと厄介

・delegateスイッチング+可変データアダプタ
 オーバーロードできない
 プロパティ風呼び出しができない

・Has-a
 オーバーヘッドはあるが、無視できることが多いかも
 ExchangerとInterfaceで2回定義を書くのがやや冗長

・分岐
 オーバーヘッドが大きい

・Factory
 動的な変更が内部的には行えない
 自身を指すポインタが複数あると厄介

自分の目的だとHas-aかデリゲートスイッチングの2択になりそうですが、
もう少し煮詰めてみて面白そうなら報告いたします。

708 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 15:37:02 ]
アップローダのアップ形式は自分ではいじれないっぽい〜。
レンタルなんですけど、ちょっと不便だなぁ。

>>684
お察しのとおり、たのしくて!
えぇーっと、多少自重します〜。

709 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 15:39:36 ]
d monooki とかいうDのソースコードアップロードできる場所が
あったけど、いま使えるっけ?

710 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 18:12:19 ]
>>707
別のインスタンスにすり替えるんじゃなくて、インスタンス自体を書き換えてみた

import std.gc, std.stdio;

class A{
void change(){ // A to B
if(B.sizeof > capacity(cast(void*)this)){
if(extend(cast(void*)this, B.sizeof-A.sizeof, B.sizeof-A.sizeof)){
throw new Exception("std.gc.extend failed");
}
}
size_t ptrsize = (void*).sizeof;
with(B.classinfo){
(cast(byte*)this)[0..init.length]
= init[0..init.length];
}
}
}
class B:A{
void change(){ // B to A
...省略...
}
}

void main(){
A a = new A;
a.change();
writefln(a); //B
a.change();
writefln(a); //A
}

711 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 19:31:30 ]
きんもー☆

712 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 19:43:00 ]
強烈過ぎて吹いたw
ちょっと使える場面が限定されそうなので、しっかりメモしてそれにとどめておきます

しかしgcがありながらこれができてしまうDの変態さには感心する

713 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 19:44:55 ]
gcがあるからこそできるんじゃね?

714 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 23:46:58 ]
version条件で、#ifndefとか#if !defined()とか#if defined() && defined() #elseに相当することってできましたっけ?
なんとなくstatic ifに書き換えてますが、無駄を感じるもので。

715 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 23:51:29 ]
どのへんが無駄?



716 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 23:56:53 ]
static if以外にはversionとdebugくらいしかないと思う
他にあったっけ?

717 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 00:06:16 ]
version(...){...}else{...}はできたような希ガス

718 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 00:47:35 ]
#if defined(FOO) && !defined(BAR)
 ...
#else
 ...
#endif

これが書きづらい。
static ifは定義済みでないと扱えないので、これをすっきり表現するには、
versionで定義されてるかどうかを真偽値とする定数を作って、……とやってるんだが、
このへんがどうにかならんもんかなあと。

719 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 00:59:10 ]
#define FOO
に変わるものがなあああいい

720 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 01:07:02 ]
コマンドラインで指定するのをあきらめて、const使う案しか思い浮かばない

const FOO = true;

static if(FOO){
const HOGE = true;
}
else{
const HOGE = false;
}


721 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 01:07:08 ]
>>719
version=FOO;

722 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 01:44:30 ]
>>548について本家で聞いてみたら、
「バグだとは認識されてるけど、『直す手間の割に実がない』とウォルターが言ってた」
とのこと。
まあ回避できるし特にいいかなと。

723 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 02:07:56 ]
>>718
mixin宣言で「hoge1&&!hoge2ならversion=hoge3」とかやろうとしてみたけど
mixin宣言で生成したversion文より先に素のversion文が解決されてしまうっぽくて、
mixin("version = hoge3;");
version(hoge3){
int x = 5;
}
と書いても
version hoge3 defined after use
と言われてしまう。

mixinがversionの評価の前に通れば、もうちょっとましにはなりそう。
(そうなるよりは、version文が進化する方がありえそうな話だけど)

version(foo)version(bar){ // foo && bar
}else{ // foo && !bar
}else version(bar){ // !foo && bar
}else{ // !foo && !bar
}
これは書きづらい上に読みづらいな。
現状では、718の言う通りversion+static ifというのが一番マシなやりかただろね。

724 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 11:52:12 ]
>>722 乙っす
なるほど
>『直す手間の割に実がない』
これがすべてだなw

725 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:46:29 ]
しかしそんなんじゃいつまで経っても普及しない希ガス



726 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:51:30 ]
そもそもウォルターには普及させる気がない気がしてる…

727 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 15:55:55 ]
でもさりげなく次の更新に修正されてるという・・・

728 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 16:06:18 ]
>>727
それはウォルターには普及させる気がないっていう不具合ですか

729 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 16:34:37 ]
それは仕様です

730 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 20:15:04 ]
ウォルタンのバグはいつ直るの?

731 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 20:24:46 ]
>>494
void rebuild(E,T)(ref T[E] array) {
T[E] result;
foreach(i, k; array.keys)
result[k] = array.values[i];
array = result;
}
テレビと同じで叩けば動くらしい。


732 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 20:24:56 ]
をるたんはをるたんの唯一の実装にして仕様そのものなので、直すべきバグは存在しません。

733 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 21:08:44 ]
flectioned の v2.007 対応のってない?

734 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 21:58:03 ]
private 定義したクラスってどういう意味になるの?普通にC++でいうstaticかと思ったら違うみたいだし。
逆にC++でいうstatic(ファイル内スコープ)なクラスはどうやったらできる?

---- b.d ----
module b;
private class B {}
private void hoge() {}

---- a.d ----
module a;
import b;
void main()
{
 B b = new B; // OK
 hoge(); // Error: function b.hoge is not accessible from a
}


735 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 22:05:43 ]
仕様によればモジュールスコープのprivateは、
Cのstaticと同じ意味になるはず。

B b = new B; もエラーにならないといけないはず。



736 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 22:30:14 ]
てことはバグかぁ。
サンクス。

まぁ、それほど困らないバグだしほっとくか・・・

737 名前:デフォルトの名無しさん [2007/11/07(水) 22:32:53 ]
>>733
flectionedをD2.007でコンパイルを通して使ってみたけど、
ちゃんと動いてないっぽい。

main関数直下でArrayBoundsError例外を発生させたら、
スタック表示はされたけど、関数名がでない。
(std.array.ArrayBoundsError) ArrayBoundsError main(80)
0x0012FD34 0x004046B3 <?>
0x0012FD4C 0x00404651 <?>
0x0012FDC4 0x004236E2 <?>
0x0012FF30 0x004023BC int main(char[][])

自前のクラスのメンバ関数でArrayBoundsError例外を発生させたら、
main関数が表示されてないし。
(std.asserterror.AssertError) AssertError Failure dbuffer.d(158)
0x0012FCDC 0x0040341F <?>
0x0012FCF4 0x004033BD <?>
0x00000043 0x0042244E <?>

ていうか、さっき初めて使ったので、なんか使い方を間違ってるのかも。
とりあえず[わなD]を見ながら使ってみたよ。
www.kmonos.net/alang/wnd/topics/flectioned.ja.html

flectionedがちゃんと使えるようになると便利いいんだけどな。
それにしても[わなD]はいつも助かるぜー。ありがたい。


738 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 00:55:02 ]
>>737
うp


739 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 02:04:41 ]
DDocについて、dittoの挙動が

///Params:x=aaa
void func(int x){}
///ditto
void func(double x){}

void func (int x);
void func (double x);
  Params:
  int x  aaa

ってかんじに、xの型がintってあたりが納得いかないんだが…と地味に思った。
この場合どうしたらいい感じに出力できるのかな?
CandyDocとか使うと結構きれいに出てくれて素敵なんだけど…こういう細かいところがなぁ…

740 名前:733 mailto:sage [2007/11/08(木) 02:34:43 ]
自分でポートしてみた。
(std.array.ArrayBoundsError) ArrayBoundsError bug(25)
0xBFB35C74 0x08052158 extern(C) void _d_array_bounds(char[], uint)
0xBFB35C88 0x0804B389 void bug.__array
0xBFB35CA0 0x0804B2F6 void bug.foo()
0xBFB35CB8 0x0804B31E int main(char[][])

なんかちがうね?なんでだろ?>>737
当方 linux


741 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 13:08:56 ]
>>739
それもきっと>>722ってことなんだろうなぁ。

もう>>722の金言は「D言語の哲学」として>>1に張っとくといいんじゃね?

742 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 13:42:07 ]
そんあこといわれたら全部>>722って言われちゃいます><

743 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 14:11:54 ]
size_t l;
stream.read(l);
array.length = l;
これ地味に面倒じゃねwwww
array.length = stream.read!(size_t);
とかで簡単にかけたら便利そうだなあああああああ

744 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 15:40:26 ]
動的配列なのにわざわざ先にサイズ指定しなくてもと思うけど・・・。

745 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 16:40:24 ]
動的配列だから先にサイズを読み込むんじゃ…?



746 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 16:59:45 ]
別に配列関係ないだろ。

747 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 17:08:31 ]
ラムダ式まだー

748 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 17:09:28 ]
>>743
をるたんにその便利さを説けば入れてくれるんじゃね?

749 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 17:24:18 ]
>>743 自分で関数書いたらよくね?

750 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 17:29:47 ]
配列以外にも拡張メソッド構文が採用されれば、できるな。

751 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 17:32:25 ]
ブライト艦長としては、既にDの開発に使える人生のリソースを100%使っていて、
どこをイジるかってのは完全にリソースの振り分け、優先順位の問題なのだろうし、
もうしばらくは優先順位の極めて高いwktkなアイディアが常に溢れた状態だろうから、
よっぽどの相対的価値をアピールしない限り、振り向いてはくれないだろうね。

752 名前:デフォルトの名無しさん [2007/11/08(木) 21:31:57 ]
>>738
コンパイルが通るだけで動作確認ができてないですけど、
もしどこかに簡単にアップできる先があればアップしますよ。

>>740
おー、ご自分でポートされたんですね。
ちゃんと動いてるっぽくていいなー。

[わなD]を見ると、私のほうでちゃんとでてないのは、
-gオプションで再コンパイルしたphobos使ってないからかも。

ちなみにうちは、WindowsXP / dmd2.0007 / phobos / dsss で稼動させてます。



753 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 21:54:20 ]
2.0007

ご、ごめん

754 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 22:57:23 ]
ちなみに同じ問題で悩んだけど 1.x 系だと phobos コンパイル通らなかった・・・!
phobos のコンパイル通すのですら、をるたんにとって優先順位低そうでイヤン

755 名前:デフォルトの名無しさん mailto:age [2007/11/09(金) 00:14:05 ]
D言語製のブラウザとかないわけ



756 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 00:15:40 ]
ないわけ

>>753
気持ちわかるw

757 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 03:30:53 ]
D言語製のブラウザとか必要もないよな・・・

758 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 03:44:52 ]
参考になるサンプルはある程度必要だろ

759 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 06:32:26 ]
アプリのサンプルというよりゲームとかなら作られてるみたいだな。

760 名前:デフォルトの名無しさん [2007/11/09(金) 07:26:59 ]
C/C++の遺産の再利用がまだしづらいのかな?

761 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 07:43:00 ]
サンプルを作ってもちょっと経ったらコンパイルできなくなりそうな言語

762 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 09:33:56 ]
そして、いつぞやの納品したやつ脂肪。。。w

763 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 18:19:13 ]
CTFEや文字列mixinに対応したIDEまだ?

764 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 21:13:59 ]
>>763
>>461

765 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 22:23:07 ]
CTFEって何ぞ?



766 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 22:27:22 ]
www.kmonos.net/alang/d/glossary.html#ctfe

767 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 22:31:11 ]
どんも。mixinならまだしも CTFE に対応はかなり厳しくない?

768 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 00:21:44 ]
もうコンパイラがIDEになっちまえばいいのではないだろうか。

769 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:00:31 ]
tango の tango.text.String と 
tango.text.Text が機能的に一緒に見えるんだが、何なんだ、これ?


ttp://www.dsource.org/projects/tango/docs/current/tango.text.String.html
ttp://www.dsource.org/projects/tango/docs/current/tango.text.Text.html

名前変わったけどそのまんま残してあるとかそんなの?

770 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:03:54 ]
String は非推奨になってるよ。
何でStringからTextにしたんだろ…
StringはStringで別のものを提供するつもりなんだろうか…
あとText.toUtf8()がおかしい。バグっぽい。Object.toUtf8()の「オーバーロード」関数になっちゃってるみたい…

771 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 06:25:53 ]
そういや配列のプロパティ形式って配列でしかダメな理由あるのかな?

772 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 08:49:49 ]
配列にはメンバがないからルックアップが簡単になるためじゃなかろうか。

たしか、カンファレンスのスライドだったかで、配列以外にも拡張するようなことが書いてあったと思う。

773 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 09:04:59 ]
そのうちメソッドが
void func(Class c) {
}
auto c = new Class;
c.func();
なんてことになるのかな

774 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 09:43:15 ]
さすがにそれはどうかと思う

775 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 09:53:36 ]
>>772
s3.amazonaws.com/dconf2007/WalterAndrei.pdf
9ページだな

まさに>>773のことが書いてある。



776 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 10:39:56 ]
>>773ので書いたらクラスに後からメソッドを追加出来るな

777 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 10:42:11 ]
それじゃクラスいらないね
全部構造体でいいじゃん

778 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 10:44:04 ]
拡張メソッドはprivateメンバに触れないからカプセル化ができないじゃん

779 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 10:48:25 ]
>>770
非推奨になってたのか。サンクス。
機能的にテキストエディタを意識しているように見えるから Text に名前変えたんかな。

780 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 11:25:42 ]
お、Dにも来るのかそれ。

……関数・メソッド・プロパティじゃそれぞれ相応しい名前が違ってくるから、
あんまり安直にごっちゃに出来て欲しくはないなぁ、というのは神経質というか今更かしらん。

781 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 12:20:32 ]
自分としてはモジュールのstatic import や別名つけてる時も大丈夫なようにして欲しいな。

import Conv = std.conv;
"12345".Conv.to!(int);

とか。使ってる関数がどのモジュールに属するのか簡単に分からないのは嫌いだし
呼び出してるのがメソッドなのか関数なのか区別つかないのは精神衛生上よろしくない。

782 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 12:27:45 ]
それはまた気持ちが悪いな…

783 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 13:13:39 ]
うへぇ、きめぇwwwwが褒め言葉のD言語ですが

>>781
自分的にもそれはほしいけど、なんかわかりにくくなるね…
…ここでスコープ解決演算子::の登場。

import Conv = std.conv;
"12345".Conv::to!(int);

とか。何でも.でアクセスするのはC++使ってた身としてはコード的に見にくくなる気がしている。

784 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 13:19:09 ]
"12345".Conv  ::  to!(int);
          ↑ここで意味の切れ目がある感じがして好きじゃないなあ

"12345".(Conv.to!(int)); とか。

785 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 13:22:09 ]
"12345".[Conv.to!(int)];

角括弧のほうが見やすそう。



786 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 13:40:50 ]
"12345".to!(int)で良いよ。無駄な冗長性はいらん。
安全に書きたいときは普通の形式で書けば良いんだし。

787 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 15:14:34 ]
某スクリプト言語風にすると
"12345".to#Conv!(int)
または
"12345".to!(int)#Conv
こんな感じかな

788 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 16:55:10 ]
Poseidonで
ERROR >>> Wrong DMD Path!!
とか出てコンパイルできないんだがどうすればいいんだ?
DMDのパスを指定してるのにできない

789 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:00:58 ]
>>786
無駄じゃないよ。
さっきも言ったように関数なのかメソッドなのか、関数ならどのモジュールの関数なのか
ぱっと見て分かるのは非常に保守しやすい。
自分の作ったものを自分で見る分には効果は薄いかもしれんが他人のソースコードを
見る時は非常に助かる。

Hoge hoge = new Hoge;
hoge.foo();

という記述があって、fooで何してるか見たい時に Hoge の定義見て、「あれ foo が無い」
となり、次は関数探すのにインポートしているモジュール見てそこから探し出すか、grep
かけた結果から探す羽目になる。

hoge.Bar.foo();

って記述してありゃ、Bar モジュールの foo()関数を読んでいるってのがすぐ分かる。

790 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:04:56 ]
>>788
dmd の1個上のフォルダ指すんじゃなかったっけ。
c:\dmd なら c:\ を指定する。

791 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:06:54 ]
>>789
ヒント: class Hoge{class Bar{void foo(){}}}

792 名前:791 mailto:sage [2007/11/10(土) 17:07:34 ]
ミスった。class Hoge{static class Bar{static void foo(){}}}ね。

793 名前:789 mailto:sage [2007/11/10(土) 17:10:30 ]
>>791-792
Bar モジュールインポートしてなければすぐ分かる話だよね。

794 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:13:55 ]
>>790
bin の1個上のフォルダ指すんじゃなかったっけ。
c:\dmd\bin なら c:\dmd を指定する。

795 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:26:33 ]
>>790,794
ありがとう。おかげでIDE環境で初コンパイル出来たよ(つД`;)



796 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:27:13 ]
>>793
まぁ、基本的にはそうだけど。
でも根本を無くすにはdmdがcallgraphを生成できるようになるのが一番だと思う。

797 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:34:26 ]
伝説のIDEが登場すればチップヘルプで教えてくれるよ。

798 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:56:28 ]
>>796-797
そりゃ、理想なんだけどさ。そのときは無駄な冗長になっちゃうね。

799 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 18:09:46 ]
hoge.Bar.foo();
このBarの部分が省略可能だったらいいのではないかと。
明示したいときは明示すればいいし。

800 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:20:07 ]
Barがmoduleなのかaliasなのかclassなのかstructなのか関数なのかメソッドなのか
プロパティなのかメンバ変数なのかが区別つかなくなって読みにくいコードになりそうだな。
…っておもったけどいざとなったらtypeofとかis式とか__traitsとかpragma(msg, ...)とか
stringofとかですぐに見つけられそうだな。

801 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 05:52:35 ]
>799のhoge.bar.foo()形式は、演算子の結合順序的にありえないだろうな。
>783のhoge.bar::foo()形式だと、mylib.barとかいうモジュール名とか考えると破綻する気が。
ありえるとしたら>784とか>785あたりのhoge.(bar.foo)()系じゃね?

>799の任意省略方式だと、static importとかで完全修飾を強制することによる
bar.foo(hoge)って記法に対して存在意義がないから、>800の言うような
混乱要素を無用に増やすだけになると思う。
>786で言われてることかな。

802 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 09:13:28 ]
>>801
関数呼び出し式は今も

IdentifierList  '(' ParameterList ')'

IdentifierList:
  identifier
  IdentifierList  '.'  identifier

だから、結合順序的には問題ないよ。意味論のフェイズで正しく処理できるようにしてやるだけ。

803 名前:デフォルトの名無しさん [2007/11/11(日) 09:17:07 ]
memo

ttp://python.matrix.jp/apps/code_blocks.html


804 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 15:46:41 ]
>>802
いやいや、お前が間違ってるよ。よく考え身。

805 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 16:05:22 ]
>>804
間違ってるとかいうなら根拠しめそうぜ
モジュール名は識別子じゃないとか間抜けなこと言う?



806 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 16:12:14 ]
>>805
結合順を考えろ。間抜け。

807 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 16:14:03 ]
ああ、マヌケにはもっと説明を加えないと分からないか。

abc.efg.hij()

これを結合順に括弧でくくってみろ。
それが既存の文法と矛盾しないか考えろ。

808 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 16:31:40 ]
'.'って、いつから演算子になったんだろう

809 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 16:34:12 ]
最初から

810 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 16:42:14 ]
演算子の結合順は実装依存。
結合順に依存するコードは誤り。


811 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:05:44 ]
>>810
お前頭大丈夫か?
そんなわけないだろ。
仕様で結合順は決まってるよ。

812 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:12:04 ]
釣り師おおすぎ

813 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:38:22 ]
土日だからな
はぁ…月曜日が待ち遠しい…

814 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:41:22 ]
月曜はニートだらけ

815 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:41:24 ]
とりあえず、「演算子の優先順位」でググって最初に出たサイト。

ttp://c-production.com/special/04092101.html

これは、Cのものだけど、Dも基本的なものは同じだよ。



816 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:44:10 ]
f17.aaa.livedoor.jp/~labamba/?%B1%E9%BB%BB%BB%D2%A4%CE%CD%A5%C0%E8%BD%E7%B0%CC

817 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:01:49 ]
>>811>>815
とりあえず、ここを読んでみようか
www.digitalmars.com/d/expression.html
Evaluation Order

Unless otherwise specified, the implementation is free to evaluate the components of an expression in any order. It is an error to depend on order of evaluation when it is not specified. For example, the following are illegal:
アホ多くてワロタ

818 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:09:25 ]
どっちにしろ、abc.efg.hij()は左結合だから、
(abc.efg).hij()と解釈されることはあっても、
abc.(efg.hij)()と解釈されることは無いな


819 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:11:47 ]
>>817
明らかにアホはお前。

評価順と結合順を勘違いしてる大バカ野郎。

820 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:17:15 ]
Barモジュールにあるfooってことで
hoge.foo@Bar()
とかどうだろう。

これでFugaモジュールにfooがある場合も
hoge.foo@Fuga()
っていけるし。

けど重複していない場合は
hoge.foo()
と省略して書けるとか。

821 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:17:51 ]
>>818
そうだけど、typeof(abc)からefgを探して、無ければグローバルから辿るでおk。

822 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:19:09 ]
>>818
式(expression.module)がexpressionとmoduleをpackしたデータを返すことにして、
それに対して.memberを呼び出したときに、module.member(expression)と解釈される。
ただし、(expression.module)のデータ型はコンパイル時にのみ存在し、変数等に保持することは出来ない。

と定義すれば何の矛盾もなくね?

823 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:29:12 ]
>>821-822
何でそんなに無意味に複雑にする必要がある。

というか、そんな風にしたら foo.Bar.hogeという式のBarが何なのかを探すのが困難すぎる。

モジュール名を記述させたい理由は
>って記述してありゃ、Barモジュールのfoo()関数を読んでいるってのがすぐ分かる。
ってことじゃなかったのかよ。
まるっきり逆効果になることを言って何がしたいんだよ。



824 名前:821 mailto:sage [2007/11/11(日) 18:35:25 ]
>>823
複雑じゃなくて実装的に自然だし。

825 名前:821 mailto:sage [2007/11/11(日) 18:36:40 ]
でも無いか、勘違いスマソ。



826 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:38:31 ]
>>824
一行目しか読めないのか?

つーか、実装的にも自然じゃねーよ。。

aaa.bbb.ccc.ddd.eee()

これがどういう探索をしないといけないのか、よく考えてみろ
bbb.ccc.dddというモジュールがあったら?
ccc.dddというモジュールがあったら?

827 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:41:20 ]
配列のプロパティ的構文で、

module util;
int sum(int[] array) { ... }
...
sum = a.sum;

関数が定義されてるモジュール名を書くようにするには、どうすればいいか、という話だったよね。

関数なら、util.func(array);で問題ないが、プロパティ的に呼び出すときには、
array.util.func;
なのか、
array.uitl::func;
なのか、とか云々。

一人、訳の分からない人がいて混乱してるけど、元々はこういう話だったということで。

828 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:46:24 ]
何も考えずに、

array.(module.func)でいいと思うんだけど。

これが気に入らない人の意見が聞きたい。

829 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:49:56 ]
それ以上省略できたら無意味に分かりにくくなるだけだしな。

830 名前:802 mailto:sage [2007/11/11(日) 20:46:36 ]
>>806>>807>>815
予想してた斜め上の回答がきててワロタ
構文解析とか意味解析とか知らないくせに左結合とか右結合とか
結合規則だけでコンパイラ語ってんじゃねぇ、ヴォケw

例えば、hoge モジュールの中に foo クラスがあって、bar っていうメソッドがあったとして、
hoge.foo.bar っていう字句列が何を意味するか分かる?

831 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:50:39 ]
>>830
何にも分かってないのはお前だけー

832 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:53:06 ]
やれやれ、結局煽るだけか。
まぁ、納得できないんじゃなく、理解できないんだからしょうがないが。

833 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:55:24 ]
>>832
つーかさ、なんで>802クンは>830で突然戻ってきた風なくせに、
突然>830でキレ気味に「ヴォケ」とかあおってんの?

そんなに悔しい出来ことがあったのですかー?

834 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:57:09 ]
はいはい、ごめんねー

835 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:57:40 ]
やれやれ、反論できずに非を認めて謝っちゃったか。最初からそうしとけばよかったのにな。



836 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 21:00:09 ]
うん、そうだね^^

837 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 21:01:23 ]
どうやらようやく理解できたようで。めでたしめでたし。

838 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 21:02:32 ]
はい

839 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:11:43 ]
わかったふりしたい時は
偉そうにクイズ出してごまかすに限るよな。

840 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:12:29 ]
上はじゃじゃ馬下はヘボ これなーんだ?

841 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:23:20 ]
ちんこ

842 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:38:35 ]
まあ>>833->>841は俺の自演なんだけどねー

843 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:49:47 ]
>>842
自演ってことにしたいの?そんなに悔しかったのかい?

844 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:26:43 ]
>>843
オマエガナー

845 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:27:48 ]
無駄なレスで消費するなよな・・・
と言うとこのレスも無駄だろと言われるんだろうけど。



846 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:31:37 ]
>>842-845
自演乙

847 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:31:48 ]
糞スレのいい再利用法だな

848 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:10:00 ]
>>846
くやしいのうwwwくやしいのうwww

849 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:58:02 ]
アイタタタタタ・・・

今日は802は悔しくて眠れないだろうなこりゃ。

850 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:59:36 ]
悔しがることかどうかもわかってないから大丈夫

851 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:59:39 ]
なんかスレのレベル下がったな

852 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:01:42 ]
俺のおかげだな。

853 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:44:38 ]
>>848
自演乙

854 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:51:56 ]
>>848=849
いい加減にしたらどうだ?
そこまでして勝ち誇りたいかね

855 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 02:04:02 ]
まだうだうだやってたのか。
せっかく俺が>>834を書き込んでやったというのに。



856 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 02:13:06 ]
でもそんなの関係ねー

857 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 02:20:07 ]
本当に悔しくて眠れないって、うけるwwwwwwwwwwwwwww

858 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 02:21:06 ]
いい加減に寝ろww

859 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 06:01:30 ]
おはよう諸君。
最後に書き込んだやつが、悔しくて最後まで起きてた奴ってことでいいかね?

860 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 07:33:14 ]
みんなみんな>>802

861 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 09:22:08 ]
>>859
悔しくて、朝一番に書き込んじゃったお前が NO.1だよ。寝てないんじゃない?

862 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 10:27:38 ]
下らない流れで加速させてもなあ(´・ω・)

863 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 10:53:31 ]
lazyって何につかってんのww

864 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 12:32:11 ]
>>859
おはよう>>802

865 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 13:18:39 ]
>>863
lazyとか、macroが導入されたら使い物にならなくなりそうな気がするな。
いまでもdelegateとか使えば表現できるし、使い道的にはぶっちゃけいらないんじゃね?
最適化のために使われたりするのかなぁ…

>>864
もういい加減その話題引っ張るのやめようぜ。



866 名前:デフォルトの名無しさん mailto:sage 願わくは俺再帰で無限ループ [2007/11/12(月) 18:00:38 ]
引っ張れば引っ張るほどそいつの悔しさが露呈するという事実

867 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:21:08 ]
>>866
やめようぜ、頼むよ。
再帰には終了条件を設定すべきだろ。

868 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:25:41 ]
終了条件はスタック溢れて例外飛ぶまででおk

869 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:56:51 ]
末尾最適化されて無限ループに

870 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:31:00 ]
auto D言語_Part15 = std.thread.getThis;
D言語_Part15.pause;

871 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:52:44 ]
何をどう書き込んだって俺の勝ちなんだから、
もう諦めようよw

872 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:13:26 ]
じゃ俺も勝ちで

873 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:16:29 ]
じゃあ俺は負けで

874 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:56:52 ]
何の祭かと思ってスレ開く前に公式すっ飛んでった俺涙目

875 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:13:13 ]
DSSS つかってみたんだけど
dsss build でexeファイルができない・・・

1>Creating imports for DD-Debug
1>Creating imports for DD-dsss_objs
1>Debug => DD-Debug
1>WARNING: Section Debug has no files.
1>dsss_objs => DD-dsss_objs
1>WARNING: Section dsss_objs has no files.

ってでます。

dsss build main.d ってやればできるんだけど
ルートディレクトリでコマンド一発ってのがdsssの機能をつかいたいです



876 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:40:31 ]
dmd 2.007で

void hoge(void delegate() func){
func();
}

void main(){
hoge({goto End;});
End:
return;
}

をコンパイルするとError: label End is undefinedってなるのと
mainのreturn;をはずすと(ラベルの後がすぐ}だと)エラー出すのは仕様通り?

877 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:51:03 ]
ラベルの後ろには文がないといけない。
End: ; ってしてみるといい。

878 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:58:46 ]
>>876
gotoで飛べるのは同じ関数の中のラベルだけで、
関数から飛び出したり別の関数へ飛び込んだりは出来ないよ。

879 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 01:38:38 ]
>>874
(´;ω;`)ぶわっ

880 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 05:34:50 ]
継・・・続・・・?

881 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 17:50:38 ]
継続はいらね

882 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:03:08 ]
あのさ、1系列はもういらない子なの?

883 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:32:21 ]
まぁ、一度もまともに固まったことのない言語に安定版の3文字など存在しないから、
1.xは実質的には、単なる「試行錯誤の跡地」であり、要らない子かもしれないな。
そこに何かを求めるのは、ついうっかりDの安定性に賭けて何か作っちゃった人くらいだな。

884 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:13:01 ]
今ふと気づいたんだけど、-v1オプションていつからか消えてる?

885 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:13:12 ]
>>883
ヒドスwwwww
でもそんな感じだな・・・
2.0もそうなるんだろうな・・・



886 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:19:54 ]
>>884
2.xには最初からなかったと思うけど
1.xにもなくなっているのかな

887 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:22:54 ]
C♯も3.0出るしな

888 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:26:53 ]
>>884
2.001から

889 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:48:23 ]
unrecognized switch '-debuglib=tango-base-dmd.lib'
Tango入れたらこんなん出てきたんですが、
これはどっか設定変えないと駄目なんでしょうか。

890 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:52:02 ]
DMDが古いんじゃね?

891 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 00:41:19 ]
入れてる dmd が古くて -debuglib オプションを持ってないんだろう

892 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 00:52:35 ]
omg
そうだったんすか。
ありがとうございました。

893 名前:デフォルトの名無しさん [2007/11/15(木) 02:07:06 ]
既出してたらゴメ。dmd2.007(win)で

import std.stdio;
void main()
{
auto A = new Object();
auto B = A;
delete A;
delete B;
writefln("end of process");
}
を実行すると、end of processは表示されるけど、
プロセスが終了しないんだが、

1.そういうことしちゃだめ。
2.今、gcがもっすごがんばってるからもうちょい待て。
3.delete式なんてただの飾りですよ。エロい人にはそれが分からんのです。
4.バグだけど直すほどの価値がない。
どれ?


894 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 02:15:54 ]
テキトーなクラスつくってデストラクタにwritelnでも入れとけば確認できるんじゃないでしょうか。

895 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 02:19:45 ]
ていうかよく見たら参照元がdeleteされたあとさらにdeleteしてるんすか。
これはやっちゃだめでしょう。



896 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 04:25:33 ]
気になって眠れないので調べたら、
「ポインタ、動的配列、参照変数は、 delete のあと null にセットされます。」
と言う一文が。
しかしこの場合nullがセットされるのは参照変数としてのA自体で、
Aの実体を参照してた参照変数のBはそのまんま(つまりゴミ参照してる)じゃないでしょうか。
なのでやっぱり複数の参照変数で参照されてる大元消したあとにdeleteするのはまずいかも。

897 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 09:24:20 ]
>>893
www.kmonos.net/alang/d/expression.html#DeleteExpression
 > それ以外の場合はガベージコレクタが呼び出され、
 > インスタンスに割り当てたメモリは直ちに解放されます。
とあるから、 delete A; でBが無効な参照になるのは確実だと思う。

ただ、解放済み(だけどもともとGCで確保した)領域への参照に対する
deleteについては仕様に言及がないと思うので、これは実装依存だと思う。
(つまり、実装によっては未定義動作となる可能性もあるということ)

実装依存となると、実装がどうなってるか分からない(今回の場合)なら
やっちゃ駄目な操作(選択肢の1)になるかな。

898 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:19:41 ]
ソースのどこで例外出してるか調べる方法ってありませんか?

dfl使ってツリービューとかにドラッグオーバーを何度か繰り返すと
例外吐くんですが、それがどこなのかわかりません。

899 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:59:14 ]
flectionedってそういうことできたっけ?

900 名前:893 [2007/11/15(木) 16:09:45 ]
>>894-897
あ、やっぱそっか。さんくす。
どうも4から疑ってしまう自分がいて、反省。
でも、例外とか吐いてくれるような仕様にならんかなあ。

901 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 17:18:37 ]
>>899
あれはTangoが無いと動かないみたいで。
dflとTangoの組み合わせは自分でやった限りでは出来なかったので。

902 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 20:52:50 ]
ddbg ttp://ddbg.mainia.de/

903 名前:デフォルトの名無しさん [2007/11/15(木) 21:26:28 ]
突然でアレなんだけどさ、これ

module a;
private import std.stdio;

module b;
import a;
void main()
{
std.stdio.writefln("hello");
}

>dmd b.d a.d

が通るって初めて知ったんだけど、キモくね?


904 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:32:41 ]
きもいね

905 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:34:31 ]
きもいけどどういう挙動が正しいのか仕様にはっきりと書いてないね。



906 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:43:37 ]
www.kmonos.net/alang/d/module.html
>デフォルトでは、import は private です。
>これは例えば モジュール A がモジュール B を、
>モジュール B はモジュール C をimportしていた場合、
>Cの名前はAでは探索されないということです。
>ただし、 import を特別に public と宣言すると、
>その import が取り込むモジュール内の全ての名前が、
>現在のモジュールを外からimportするモジュールにも見えるようになります。

未定義になるべきなのでは
もしかして実はデフォルトがpublicなのかなーとか思って明示的にprivate import aにしてみたがやっぱり通るね。

907 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:09:59 ]
バグじゃない?

908 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:00:36 ]
>>903
それ、モジュールAとimport a;が無くても通るんだよね。
だから、仕様だと思ってた。
フル修飾だとimport不要、みたいな。

909 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:01:33 ]
それだとstatic importの立場がなくなるがな

910 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 07:49:58 ]
8ビットのビットマップクラスをつくてるんだが、streamのFileをオープンした瞬間にアクセス違反で落ちる。
Windowsなんだけど、なんでかな〜。いまのとこ、無いファイルを作ろうとしてるんだけど。
コンソールに違反だよ〜ってでるからAPI内部の犯行ではないはずなんだけど。
あ、コンパイラのバージョンは1.015です。

    bool Save(char[] name, bool IsIgnor = false){
        BitmapFileHeader bmh;
        bmh.bfType = 0x4d42;// 'B'<<8 + 'M';        
        
        if(exists(name) == true){
            if(IsIgnor == false) return false;
        }
        
        static if(IsDebug) writefln("file:",name);
        File fo;
        fo.open(name,FileMode.OutNew);
/*      if(fo.isOpen == false) return false;
        
        fo.writeBlock(cast(void*)&bmh,bmh.sizeof);
        fo.writeBlock(cast(void*)&bih_,bih_.sizeof);
        fo.writeBlock(cast(void*)Palette_,uint.sizeof*Palette_.length);
        fo.writeBlock(cast(void*)Pixel_,ubyte.sizeof*Pixel_.length);
*/      fo.close();

911 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 08:22:13 ]
newせいよ

912 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 08:55:43 ]
>>911
ぐあ。はずかし!またやってしまった!!
くそー。癖って抜けないね。
なんにせよ、レスありがとう!!!!


913 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 18:16:10 ]
aliasじゃインターフェイスを実装したものとみなされないのか…

914 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 18:53:24 ]
Tangobos→Phango

915 名前:デフォルトの名無しさん [2007/11/16(金) 19:05:07 ]
Phagos



916 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:15:53 ]
Photangobos

917 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:21:30 ]
デバッグってvs2005でもいけるんでしょうか。
vs6だとうまく行くんだけど、vs2005だと作業フォルダ指定しても
ブレークポイントに反応してくれない。

918 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:21:37 ]
pthaonbgoos.

919 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:46:48 ]
phandango

920 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 22:20:40 ]
Tanpo

921 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:16:22 ]
Chi...

922 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:32:45 ]
>>889
>unrecognized switch '-debuglib=tango-base-dmd.lib'
自分もその現象が発生しました。Tango 0.99.3になってそのスイッチを使い始めたみたいです。
調査の結果、rebuildが-debuglibに対応できていないのが原因のようで、dsss最新版のrebuildを使ってみてもだめみたいです…
というわけで、dsssやrebuildを用いないでコンパイルするとうまくいくことがわかりました。
レスポンスファイルを作ってやるか、makeを活用するとよいかと思います。

というわけでそれを踏まえてDFL 0.96.01を使ってみたのだけど、いくつかはまったので使いたい方は以下を参考するとよいかと思います。
import\dfl\makelib.bat(23)にinternal/_stdcwindows.dを追加
import\dfl\makelib.bat(25)に_stdcwindows.objを追加
import\dfl\makelib.bat(34)の-v1を削除
でgo.batを実行してライブラリをビルドすることで解決したので参考までに載せておきます。

923 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:39:00 ]
>>917
ああそういうことだったのかな
前はソースレベルデバッグできてたのにいつの間にかできなくなったと思っていたら

924 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:45:01 ]
どなたかDflでドラッグドロップ系の処理が出来ている方っていますか?
いたらバージョンを教えてほしいのでスが。

925 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:39:57 ]
class A{
static void opBrace(void delegate() v){v();}
}
A{printf("brace");}
みたいなのが欲しい。




926 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:44:01 ]
q{} 文字列リテラルを追加しちゃったから、望み薄だな。

927 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:48:39 ]
>>926
あれは、{code();}.stringof とかの方がよかったと思うのにな。。

928 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:48:48 ]
tanpopo
tanbo
botan
popotan
bosan


929 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:53:37 ]
>>926
a(b)があるけど、opCallもあるから大丈夫だ。

930 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:55:55 ]
>>929
いや、そういうことじゃなくて…

931 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:12:34 ]
q{}を無くせばおk

932 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:20:01 ]
どういうことだ?
printf(q{A{"huga\n"}});は通る

933 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:43:14 ]
>>924
ドラッグドロップ系使う時は
Application.run(...) を呼び出す前に Application.autoCollect = false; として、
頻繁にGCが走らないようにすると、とりあえず落ちるのは回避できるみたい。
必要な領域までGCに解放されてしまってるのかも…

934 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:55:40 ]
直りました!

助かりましたありがとうございました。

935 名前:デフォルトの名無しさん [2007/11/17(土) 03:21:23 ]
mixin(q{aaaaaaaaaaaaaaa});
//error!



936 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 07:50:54 ]
phungus

937 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 08:15:23 ]
matango
simeji
enoki
shitake

938 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 10:27:00 ]
ttp://www.dsource.org/projects/tango/wiki/0_99_3_release
・DMD builds no longer generate libphobos.a/phobos.lib, but instead utilize the -defaultlib switch.
This enables phobos to install side-by-side with Tango
・Also note that there is an experimental D2.0 branch in our repositories now.

939 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 11:22:11 ]
ttp://www.dsource.org/projects/tango/browser/branches/experimental/D2.0

940 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 11:35:17 ]
>>932
頭悪いのな。お前。

941 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:08:26 ]
よく言われる

942 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:14:43 ]
よく言われる932
よく言い、よく陰で思われる940

943 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 13:23:45 ]
よく言われる932
よく言い、よく陰で思われる940
よく言い、よく影で思われ、それに気づかない942

944 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 14:17:02 ]
class q{
static string opBrace(void delegate() d){return d.stringof;}
}
class q{
static string opBrace(string s){return s;}
}
とかできれば、q{}はいらないと

945 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 14:58:13 ]
そもそもqは何のためにあるの



946 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 15:01:26 ]
mixin(q{ some_valid_code_here; });

947 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:09:11 ]
>>946
ありがとう
えーとじゃあ↓じゃなくて
mixin("some_valid_code_here;");
そうしたい場合ってのはどんなとき?

948 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:39:11 ]
文字列と整数を合体させたい場合ってどうやるんでしょうか

949 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:43:54 ]
>>947
mixin(q{ this is not valid tokens; }); // error
mixin(q{ this_is_valid(); });

ってことじゃね。

950 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:49:33 ]
>>948
std.conv.to!(string)

951 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:59:29 ]
mixin(" this is not valid tokens; ");
でもエラー出ね?
出るエラーが違うのかな

952 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 18:12:02 ]
>>951
変数に格納したりするなら、エラーの出る場所が違うな。

953 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 18:26:50 ]
みんな分かってるみたいなのに
q{}の意義が全然わからなくて俺涙目
>>949 それをどういうときに使うのかと

954 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 18:48:38 ]
mixin て何か分かってんのかね、おまいは。

955 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:00:36 ]
わかりやすく説明すると、トークン文字列 q { ... }の内部の文字列は、Dのトークンであるので、
Dの字句解析をパスしなければならない。
つまり、文字列が、Dのソースとして解釈可能であるかどうかを判別できる。



956 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:01:46 ]
q{}なんてあったの初めて知った。
コードを文字列として渡すときに、ダブルクォートの中にコードを書くなんていう、
エディタ支援が受けられない(どころかむしろ邪魔になる)苦行に挑まんで済むわけね。

957 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:04:00 ]
え?そうなの?
俺は、変態なことやってる場所を簡単に検索できるためだと思ってた。

958 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:50:02 ]
import std.stdio;
void main() {
const a1 = "\"hoge\"";
mixin("string c1=mixin(\"mixin(\\\"\\\\\\\"huga\\\\\\\"\\\")~\\\"hoge\\\"\") ~ mixin(a1);");
writeln(c1);

const a2 = q{q{hoge}};
mixin(q{string c2=mixin(q{mixin(q{q{huga}})~q{hoge}}) ~ mixin(a2);});
writeln(c2);
}
どっちがいいかとか

959 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:19:35 ]
import std.stdio;
void main() {
const C = q{ mixin(A) + mixin(B) };
const A = q{ a };
const B = q{ b };
int a = 10;
int b = 20;
writeln( mixin(C) );
}
こんなことできたりとか

960 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:39:42 ]
なんという遅延評価…

961 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:49:09 ]
import std.stdio;
void main() {
const s = q{mixin(s)};
writefln(mixin(s));
}

962 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:59:16 ]
q{}はmixin用ってことでおk?

963 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 21:00:15 ]
import std.stdio;
alias string symbol;
template add(symbol o, symbol v) {
const add = `mixin( q{`~o~`} ) + mixin( q{`~v~`} )`;
}
void main() {
const c = add!(q{a},q{b});
int a = 10;
int b = 20;
writeln(mixin(c));
a = 100;
b = 200;
writeln(mixin(c));
}

964 名前:953 mailto:sage [2007/11/17(土) 22:21:54 ]
>>954
mixinは大丈夫

他のレスは後で試してみます
なんか分かりそう
ありがとん

965 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 03:48:38 ]
べつに構文はvalidじゃなくとも字句だけDの範疇ならOKだよね?
q{int int class class invalid;}とかやっても大丈夫だし。



966 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 04:33:28 ]
実行時mixinないかなー

967 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 04:39:23 ]
opStarAssignマダー

968 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 07:46:51 ]
亀ですまんけどちょっと質問>>542どうやって?
int a,b,c;
Tuple!(a, b, c) = Tuple!(10, 20, 30);とかって無理じゃね?

969 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 09:04:33 ]
>>968
template Tuple(T...) { alias T Tuple; }

970 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 09:07:40 ]
もしかしてDMD古いとできない?

971 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 11:12:39 ]
>>970
1.023/2.006 でバグフィックスされてできるようになったのでそれより古いとダメ

972 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 13:26:30 ]
obj[index] = value;
はopAssignでオーバーロードできるけど、
obj[index] += value;
みたいな複合代入をオーバーロードする方法ってある?

973 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 13:36:38 ]
opAddAssign

974 名前:デフォルトの名無しさん [2007/11/18(日) 13:39:55 ]
あ、配列か。
opIndexでオブジェクトを返すとか

()がいるけど

975 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 14:22:19 ]
>>971
1.020使ってたよ・・・(´・ω・`)
バージョンうpしたいけどgdcがなあ・・・



976 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 14:39:31 ]
opIndexOpAssign
opStarAssign
opStarOpAssign

このあたり追加して欲しい

977 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 15:00:41 ]
Opってなんだ?

978 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 15:27:53 ]
AddとかDivとか

979 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 15:29:19 ]
opSliceOpAssign
opCallAssign
opCallOpAssign

もお願いします!

980 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 16:26:29 ]
obj(arg) = val;



…さすがに要らんと思う。

981 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 16:27:55 ]
obj(arg) += val;
きんもーwww


982 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 16:34:26 ]
perlだと関数呼び出しがlvalueになれるよな。
まあ、下駄雪駄を合わせたプロパティ的用途か、スライスへの代入の用途が主だから、
Dなら別の機能で間に合ってるけど。

983 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 16:51:25 ]
opCallで内部クラスでも返せばよくねwwwww

984 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 23:02:43 ]
どうぞ。

D言語 Part16
pc11.2ch.net/test/read.cgi/tech/1195394435/


985 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 08:06:43 ]
あとすこしで落ちるからたわ言など。

公式で、ユーザライブラリコンテストとかやらないかねぇ。
一回総集編を作ってほしい。
現状、フレームワークは決定打ないし、グラフィックライブラリはないし、サウンドライブラリも無い。
でもなぜかZIPはあるし、細かいスパイスのきいたライブラリがそろってるのもまー事実。
Tangobosの問題もあるし、V2系のラストで是非やってほしいと結構おもてる。
問題はいつV2系が安定するかだなぁ。。。



986 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 08:23:40 ]
あと15レス分は何に使うかな。

987 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 08:31:00 ]
Truetypeフォントを動的ロードできて、さらに描画できたら、結構汎用性あがるかなぁ。
ファイルフォーマットの内容しらないし、ライセンスがどうなってるかは知らないけど。
プログラムの場合ってラスタフォントのほうが相性いいのかなぁ。

988 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 08:41:07 ]
インターフェースの設計っていい叩き台ないもんですかね。
現状、Bitmapのインターフェースの設計をてきとーにやってるんですけど、
うまく全部(1〜32びっと)に当てはまるインターフェースが良くわからないです。
総合あーかいばプロジェクトは割りとその辺の設計が良かったから普及したようなもんだし。
なんか、いい手はないもんかなぁ。

989 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 09:04:06 ]
規制に引っかかったので自重

990 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 13:47:25 ]
>>982
perlのlvalueってあれ単に参照返してるだけに見える俺は異常?

991 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 16:26:04 ]
中間言語導入による部分的な動的コンパイルの実現!

992 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 16:41:26 ]
中間言語いらんからコンパイラを標準ライブラリに(ry

993 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 16:47:31 ]
>>988
よくわからんが、
void[]でビットイメージを保持しておいて、
インデクサを用いて適切に変換するようにすればいいんじゃなかろうか。

994 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 17:04:36 ]
>>988
>707だけど同じ目的なので設計を話し合ってみませんか?
私はピクセルに触る部分だけ専用の関数を作って、これをピクセルフォーマットごとに変えるようにし、
それ以外の塗りとかその他は必ずその関数経由で触るように設計しました。

あとで自分がやった内容についてファイルをうpしてみます。

995 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 17:23:34 ]
>>990
参照返してるだけだな。
ただの構文糖



996 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 18:17:27 ]
俺の欲しいもの:
* プロパティに対する複合代入
* ラムダ式

をるたん、クリスマスプレゼントまってます。

997 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 18:33:38 ]
それまで>996はいい子にしてないとな

998 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 20:28:25 ]
D言語 Part16
pc11.2ch.net/test/read.cgi/tech/1195394435/l50


999 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 20:30:25 ]
次スレ
D言語 Part16
pc11.2ch.net/test/read.cgi/tech/1195394435/l50


1000 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 20:30:45 ]
1000

1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<219KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef