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/
552 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 20:46:56 ] >>549-550 すんません間違えました……でも両方とも class Foo is forward referenced when looking for 'FooEnum' でコンパイルエラーとなるという。 シンボルの意味が定義される順番が A群 Foo, GlobalEnum, BarX(とテンプレート引数) ↓ B群 Fooの内部、BarCの内部…… というふうになっているからかな、とは思うのですが。
553 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 22:11:25 ] >>551 つながらない。
554 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 00:20:56 ] >>552 そこら辺、実装が微妙だよな。 内部関数も前方参照できないと使えないし。
555 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 09:15:56 ] What's New for D 2.007 Oct 31, 2007 New/Changed Features * Functors now supported by std.traits.ReturnType(). * Transitive const now leaves invariants intact in the tail. * Added overloadable unary * operation as opStar(). * Full closure support added. * Data items in static data segment >= 16 bytes in size are now paragraph aligned.
556 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 09:17:01 ] 貼ってから気づいたけれどフルクロージャーサポートかっ!
557 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 09:26:28 ] 2行目の意味誰かkwsk!
558 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 09:54:04 ] opStar・・・・・・これでboost::spiritが移植可能かも! いやあんまり要らん気がするが
559 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 09:59:50 ] writefに("日本語")としたらinvalid UTF-8 sequenceとでてコンパイルできないんですが どうしたらコンパイルできるんでしょうか。
560 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 10:08:29 ] ソース自体をUTF-8かUTF-16で保存してください。
561 名前:559 mailto:sage [2007/11/03(土) 10:23:38 ] >>560 UTF-16は選べなかったので、UTF-8で保存したらできました。ありがとうございます。 ただUTF-8なので??となりました。
562 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 10:27:12 ] 今更だがSharpDevelopいいな
563 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 11:15:20 ] >>561 今のところ、Windows上で出力内容を化けさせずに見たい場合は 1、テキストファイルに出力して確認 2、printfでUTF-16を使う のどちらかじゃないですかね。コンソールでCHCP 65001とかやる手もありますが、 これだとなんか表示がおかしくなる上にコンソールのサイズが強制的に変更されるので使いづらいです。 2の方法の場合、下のようにするとうまくいきます。 //↓こんな感じ import std.c.locale; void main() { setlocale(0,"jp.932"); printf("%.*ls\n","日本語"w); } ただこれ日本語版のWindows環境以外について全く考慮してないプログラムになるんで、 もう一工夫した方が良いと思います。単なるテストプログラムと割り切ってるなら そんなん考えないでも良いと思いますけど。
564 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 11:28:43 ] Internal error: ../ztc/cgcod.c 1031
565 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 12:14:15 ] * Full closure support added. とうとうきたのか!?
566 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 13:47:29 ] ヘルプのtemplateのサンプルの Curry をこんな感じで書き換えたらアブノーマルエラーで落ちるんだけれど、これ何処か間違ってます? windows2kでdmd 2.007なのだけれど・・・ R delegate(U) Curry(R, A, U...)(R delegate(A, U) dg, A arg) { return (U u) { return dg(arg, u); }; }
567 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 13:49:57 ] >>565 D\(^o^)/ハジマタ import std.stdio; uint delegate() counter() { uint i = 0; return {return ++i;}; } void main() { auto c = counter(); writeln(c()); // 1 writeln(c()); // 2 writeln(c()); // 3 }
568 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 13:53:57 ] >>566 構文的には間違ってないと思うから、 まだバグ餅と考えたほうがいいかもね。
569 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 13:56:50 ] >>565 ttp://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=61016
570 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 14:02:32 ] これのGCってstop the world? それともなにがしかのコンカレントGC?
571 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 15:27:05 ] おークロージャキタ━(゚∀゚)━!!
572 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 16:24:31 ] これはハジマッテルなwwwwwwww やべえwwww
573 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 16:25:47 ] クロージャってどういうときつかうの? ネストした関数なら使うことあるけど。
574 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 16:25:56 ] いよいよ2.0に挑戦するときが来たか……。 といいつつもクロージャがサポートされるとなにが嬉しいのかよくわからない俺。
575 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 16:27:31 ] ごめん被ったw
576 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 16:32:50 ] wktk
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をコンテナとして、リストのリストと言う具合に、 入れ子にするのは良くあることだと思うのだけど。