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/
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 そうだったんすか。 ありがとうございました。