D言語 Part19
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/08/04(月) 10:24:58過去スレは >>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フロントエンド)
■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF)
ttp://dsource.org/ (dsource)
ttp://tinyurl.com/3da5oa (C/C++に疲れた人のD言語)
ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語)
ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか)
ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座)
ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画)
ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games)
■ IDE
ttp://dronten.googlepages.com/dscite (DSciTE)
ttp://forums.codeblocks.org/index.php?board=20.0 (Code::Blocks)
ttp://www.dprogramming.com/entice.php (Entice Designer)
ttp://www.dsource.org/projects/descent (Descent)
ttp://www.dsource.org/projects/poseidon (Poseidon)
0002デフォルトの名無しさん
2008/08/04(月) 10:26:14Part18 http://pc11.2ch.net/test/read.cgi/tech/1208153782/
Part17 http://pc11.2ch.net/test/read.cgi/tech/1202623572/
Part16 http://pc11.2ch.net/test/read.cgi/tech/1195394435/
Part15 http://pc11.2ch.net/test/read.cgi/tech/1191582990/
Part14 http://pc11.2ch.net/test/read.cgi/tech/1184807424/
Part13 http://pc11.2ch.net/test/read.cgi/tech/1177499924/
Part12 http://pc11.2ch.net/test/read.cgi/tech/1171037394/
Part11 http://pc10.2ch.net/test/read.cgi/tech/1165621441/
Part10 http://pc8.2ch.net/test/read.cgi/tech/1158013550/
Part 9 http://pc8.2ch.net/test/read.cgi/tech/1146656260/
Part 8 http://pc8.2ch.net/test/read.cgi/tech/1137068104/
Part 7 http://pc8.2ch.net/test/read.cgi/tech/1122912733/
Part 6 http://pc8.2ch.net/test/read.cgi/tech/1109933426/
Part 5 http://pc5.2ch.net/test/read.cgi/tech/1102785854/
Part 4 http://pc5.2ch.net/test/read.cgi/tech/1091185216/
Part 3 http://pc5.2ch.net/test/read.cgi/tech/1079068715/
Part 2 http://f3.aaacafe.ne.jp/~null/cache/1079280501.html
Part 1 http://pc5.2ch.net/tech/kako/1003/10036/1003674814.html
0003デフォルトの名無しさん
2008/08/04(月) 10:27:28D言語なら俺に聞け
http://pc11.2ch.net/test/read.cgi/tech/1108172110/
D言語を広めるスレ
http://pc11.2ch.net/test/read.cgi/tech/1175432606/
D言語は多分コケると思っている人の数→
http://pc11.2ch.net/test/read.cgi/tech/1136288019/
【次世代言語】D言語でOSを作ろう【Monaの移植?】
http://pc11.2ch.net/test/read.cgi/tech/1128794438/
バイナリをゲロる言語の魅力って何?
http://pc11.2ch.net/test/read.cgi/tech/1160869311/
その他リンク
【Java/C/PHP/Perl/Ruby/Python/TeX】Eclipse M22
http://pc11.2ch.net/test/read.cgi/tech/1168166588/
eclipseってそんなに良いか?【エクリプス】
http://pc11.2ch.net/test/read.cgi/tech/1099300344/
統合開発環境Eclipseプラグイン開発QA
http://pc11.2ch.net/test/read.cgi/tech/1081517094/
"Code of the Nerds" Digital Mars C/C++
http://pc11.2ch.net/test/read.cgi/tech/1044210976/
0004デフォルトの名無しさん
2008/08/04(月) 11:10:370005デフォルトの名無しさん
2008/08/04(月) 12:08:500006デフォルトの名無しさん
2008/08/04(月) 20:13:090007デフォルトの名無しさん
2008/08/04(月) 20:20:520008デフォルトの名無しさん
2008/08/06(水) 01:15:26ガベージコレクタを使わないことを静的に明示する。
あとscope強化してほしい。クラスメンバにscopeつけられるとか。
0009デフォルトの名無しさん
2008/08/06(水) 03:04:310010デフォルトの名無しさん
2008/08/06(水) 14:17:070011デフォルトの名無しさん
2008/08/06(水) 14:34:090012デフォルトの名無しさん
2008/08/06(水) 19:44:190013デフォルトの名無しさん
2008/08/06(水) 22:08:09全体のバイト数が欲しかったのに><
0014デフォルトの名無しさん
2008/08/06(水) 22:12:09勘弁してくれ
コンテナ作るときとか困るだろ?
0015デフォルトの名無しさん
2008/08/06(水) 22:13:53マイコンとかそっちは、やっぱアセンブラかCだよな
0016デフォルトの名無しさん
2008/08/06(水) 22:20:55規模によるんじゃね?カーナビとか腕時計とか、それこそいろんな種類があるだろ
0018デフォルトの名無しさん
2008/08/06(水) 22:33:00組み込みはDいけるのか
0019デフォルトの名無しさん
2008/08/06(水) 23:05:51Dなんて無条件ボツ
0020デフォルトの名無しさん
2008/08/06(水) 23:18:05ライブラリが鬼門だが、組み込みやる奴ならライブラリから作るだろうし。
今は invaliant があるから ROM 化しやすいはずだぞ。
0021デフォルトの名無しさん
2008/08/06(水) 23:21:080022デフォルトの名無しさん
2008/08/06(水) 23:22:080023デフォルトの名無しさん
2008/08/06(水) 23:23:28「組み込み」が必ずしも低リソースな環境での開発を意味するわけではないでそ
0024デフォルトの名無しさん
2008/08/06(水) 23:29:220025デフォルトの名無しさん
2008/08/06(水) 23:30:21あるよ。
http://www.digitalmars.com/d/2.0/statement.html#TryStatement
>>22
obj = new Object;
// do something on obj
volatile keepAlive = obj;
0026デフォルトの名無しさん
2008/08/06(水) 23:33:38やっぱカリカリにチューニングするにはそうするしか無いんだな
002725
2008/08/07(木) 00:31:52synchronized auto keepAlive = obj;
でした。
volatileないと不必要に同期処理入るのが気に入らんなあ。
最適化を抑制するのになんか別の書き方ないんだろうか。
0028デフォルトの名無しさん
2008/08/07(木) 02:30:120029デフォルトの名無しさん
2008/08/07(木) 02:58:35ボツになるのはテメーのコードだけで十分だ
0030デフォルトの名無しさん
2008/08/07(木) 03:00:210031デフォルトの名無しさん
2008/08/07(木) 08:13:53どうしたんだよ
0032デフォルトの名無しさん
2008/08/07(木) 12:21:10しかし反省する様子はない
くり返し注意をしても無反応
いいかげん無視しようとみんなで話していると
ただ黙っていた>>29が初めて口を開いた。
いや、開いたのは下の口だった…。
0033デフォルトの名無しさん
2008/08/07(木) 12:31:580034デフォルトの名無しさん
2008/08/07(木) 13:02:580035デフォルトの名無しさん
2008/08/07(木) 14:08:41d_time MakeDay(d_time year, d_time month, d_time date)
もう完全に型の意味ないじゃん。
0036デフォルトの名無しさん
2008/08/07(木) 14:12:11writeln(toString(MakeDate(MakeDay(2008, 8, 7), MakeTime(14, 8, 41, 0))))
MakeDate,MakeDay,MakeTimeの引数・戻り値は表してるものが全部違うのに同じ型。
0037デフォルトの名無しさん
2008/08/07(木) 14:51:420038デフォルトの名無しさん
2008/08/07(木) 19:33:21http://www.kmonos.net/alang/d/2.0/statement.html
1.0にはあったVolatileStatementが消えてなくなってたからボツになったと思ってたんだけど
違うの?
0039デフォルトの名無しさん
2008/08/07(木) 19:40:35> VolatileStatement を非推奨としました。代わりに SynchronizedStatement を使用してください。
だよ。
0040デフォルトの名無しさん
2008/08/07(木) 19:44:4029は何なの
0041デフォルトの名無しさん
2008/08/07(木) 21:34:450042デフォルトの名無しさん
2008/08/07(木) 21:50:230043デフォルトの名無しさん
2008/08/07(木) 21:54:18unsigned int volatile *reg = (unsigned int volatile *)0xABCD1234; //なんかのレジスタ
while(*reg & 0x1){} //ポーリング
で、volatile付けないと最適化されて無限ループになっちゃうっていう
0044デフォルトの名無しさん
2008/08/07(木) 22:06:33命令の順序を入れ替えたり省略したりしないのがvolatile,
それに加えて複数の命令をアトミックにするのがsynchronized
0045デフォルトの名無しさん
2008/08/08(金) 01:10:54アトムボーイ
きりり
0046デフォルトの名無しさん
2008/08/08(金) 11:55:32行かないけど
0047デフォルトの名無しさん
2008/08/08(金) 12:08:480048デフォルトの名無しさん
2008/08/08(金) 12:47:570049デフォルトの名無しさん
2008/08/08(金) 13:00:49http://www.dsource.org/projects/tango/forums/topic/563
0050デフォルトの名無しさん
2008/08/08(金) 13:02:350051デフォルトの名無しさん
2008/08/08(金) 14:39:09破壊的な変更があると盛り上がるんだが…
0052デフォルトの名無しさん
2008/08/08(金) 14:39:31なるほど、ありがとう。
0053デフォルトの名無しさん
2008/08/08(金) 14:50:16kanji
が登場
kanji.utf8
kanji.sjis
kanji.eucjp
などなど
0054デフォルトの名無しさん
2008/08/08(金) 20:38:250055デフォルトの名無しさん
2008/08/08(金) 20:53:16やっぱりSUMOUのがよかったかな?
0056デフォルトの名無しさん
2008/08/08(金) 21:44:010057デフォルトの名無しさん
2008/08/08(金) 22:07:480058デフォルトの名無しさん
2008/08/08(金) 23:18:060059デフォルトの名無しさん
2008/08/08(金) 23:31:02これじゃダメなのか?
http://www.kmonos.net/alang/d/2.0/phobos/std_gc.html
std.gc.disable();
0060デフォルトの名無しさん
2008/08/09(土) 00:02:09>>58の言いたかったことは、GCを使わない記述は現状非常に困難で、
std.gc.disable(); とかしたときでもメモリ使用量を増やすことなく
動作するプログラムが書けないねってことなんじゃないかと思った。
そんな俺は>>8
0061デフォルトの名無しさん
2008/08/09(土) 00:30:36それはGCの回収作業を一時的に止めるだけ。
言語仕様自体がGCの存在にいそんしてるから、GCを完全に無効にしてしまうと、
かなり気を使ってコードを書かないとメモリリークする。
0062デフォルトの名無しさん
2008/08/09(土) 00:36:23すまん
文章しか読まないで、文章の意味と意図を全然考えて無かった
0063デフォルトの名無しさん
2008/08/09(土) 01:58:45それはCなみに、ですか。それともC以上にですか?
0064デフォルトの名無しさん
2008/08/09(土) 02:23:15C以上に。
Cだとmallocに対応したfree書いとけばメモリリークしない。
C++でもnewした分だけdeleteすればいい。
でも、Dは違う!Dはすごい!!
うっかりしてるとコンパイラが勝手にnewしてる。
newとか.dupとか書かなくても独りでにオブジェクトが増えてる。
自分でnewしてないやつまでdeleteしないといけない。
配列リテラルとか全部deleteしないといけない。
0065デフォルトの名無しさん
2008/08/09(土) 02:25:38それは死にますね。というか、自力管理はほとんど不可能ではないでしょうか。
0066デフォルトの名無しさん
2008/08/09(土) 02:30:58や、便利機能を封印すればいいだけなんでできんことはないよ。
DのGCの自体もDで書いてあるわけだけど、GCに依存しないようにできてる。
ただ、見てみれば分かると思うけど、まんまCだから素直にC使ったほうがいいw
0067デフォルトの名無しさん
2008/08/09(土) 05:24:50これはここで聞くべき事柄ではないですか?
正しい処理:
Resource* res = dll_malloc();
...
dll_free(res);
解放忘れ:
Resource* res = dll_malloc();
...
//dll_free(res); ←これを忘れていないか調べたい
0068デフォルトの名無しさん
2008/08/09(土) 05:48:07つまり、dll_malloc/freeのかわりにdebug_dll_malloc/freeにでもして、呼び出しの数かぞえる。
でもどうせなら折角GCあるんだし、オブジェクトでラップしてデストラクタで開放してやればリークしなくなるよ。
0069デフォルトの名無しさん
2008/08/09(土) 08:15:03T[] a, b;
...
a[] = b[] + 4;
だそうです。
0070デフォルトの名無しさん
2008/08/09(土) 08:23:190071デフォルトの名無しさん
2008/08/09(土) 12:19:320072デフォルトの名無しさん
2008/08/09(土) 12:23:150073デフォルトの名無しさん
2008/08/09(土) 12:44:520074デフォルトの名無しさん
2008/08/09(土) 13:55:38[]付けると配列演算なのね
0075デフォルトの名無しさん
2008/08/09(土) 17:23:07New/Changed Features
* Now supports array operations.
ワロタ
0076デフォルトの名無しさん
2008/08/09(土) 18:00:400077デフォルトの名無しさん
2008/08/09(土) 18:40:18とかはできないのかー
0078デフォルトの名無しさん
2008/08/09(土) 18:42:19all your base are belong to us.
0079デフォルトの名無しさん
2008/08/09(土) 21:38:19なんかいい例ないですかね。
0080デフォルトの名無しさん
2008/08/09(土) 21:40:180081デフォルトの名無しさん
2008/08/09(土) 21:45:36利便性というよりはベクトル化が目的なんじゃないのかね。
お世辞にも構文的に使いやすいとはいえないし。
0082デフォルトの名無しさん
2008/08/09(土) 21:54:27>>80
メモリ負荷を気にしないでpush_backできるなら結構すごいと思います。
>>81
最適化でSSE使うとかそっち方面の話ですか?
0083デフォルトの名無しさん
2008/08/09(土) 22:18:29逆アセはしてないが、計った感じだと
0084デフォルトの名無しさん
2008/08/09(土) 22:48:27そうだと思う
0085デフォルトの名無しさん
2008/08/10(日) 04:28:270086デフォルトの名無しさん
2008/08/10(日) 06:37:550087デフォルトの名無しさん
2008/08/10(日) 06:43:251系の方がいい理由とかあるんでしょうか。
0088デフォルトの名無しさん
2008/08/10(日) 06:46:33訳ではないな、すぐ↑で話題になったとおりw
0089デフォルトの名無しさん
2008/08/10(日) 08:32:230090デフォルトの名無しさん
2008/08/10(日) 11:18:240091デフォルトの名無しさん
2008/08/10(日) 13:02:58俺発見
0092デフォルトの名無しさん
2008/08/10(日) 13:12:270093デフォルトの名無しさん
2008/08/10(日) 13:37:400094デフォルトの名無しさん
2008/08/10(日) 16:53:140095デフォルトの名無しさん
2008/08/10(日) 16:57:360096デフォルトの名無しさん
2008/08/10(日) 17:22:350097デフォルトの名無しさん
2008/08/10(日) 19:49:130098デフォルトの名無しさん
2008/08/10(日) 22:09:080099デフォルトの名無しさん
2008/08/10(日) 22:31:36あとキューとかFIFOとか・・・みなさんはどうされてますか
0100デフォルトの名無しさん
2008/08/10(日) 22:41:240101デフォルトの名無しさん
2008/08/10(日) 22:45:10まあキューやスタックぐらいなら自力で書いてもいいかなとは思うが
0102デフォルトの名無しさん
2008/08/10(日) 23:06:33tangoは2.0で動かないから、自分専用ライブラリがだいぶ膨らんできた。
0103デフォルトの名無しさん
2008/08/10(日) 23:22:34公開してすっきりするんだ
0104デフォルトの名無しさん
2008/08/11(月) 00:13:36俺も。
Stack,Queue,TreeSet,TreeMap,HashSet,
SFMTバインディング,CURLバインディング,iconvバインディング,gmpバインディング
を自分で何とかしたよ。
0105デフォルトの名無しさん
2008/08/11(月) 00:34:12悩み続けたが、いまだに答えは出ていない
0106デフォルトの名無しさん
2008/08/11(月) 01:49:28Stack x;
// なんかいろいろ処理
Stack y = x;
とかしたときにビットコピーされることを意識しないといけないから、
クラスのほうが混乱がなくていいんじゃないかと思う
…んだけど、なんでTangoは構造体に…?
0107デフォルトの名無しさん
2008/08/11(月) 02:12:45template Array(T){ alias T[] Array; }
みたいにしたら似た感じで扱える。
0108デフォルトの名無しさん
2008/08/11(月) 03:43:510109デフォルトの名無しさん
2008/08/11(月) 09:30:230110デフォルトの名無しさん
2008/08/11(月) 10:03:060111デフォルトの名無しさん
2008/08/11(月) 11:37:560112デフォルトの名無しさん
2008/08/11(月) 12:38:211.0 の方も同様。
0113デフォルトの名無しさん
2008/08/11(月) 12:55:47多重継承とメッセージクラッカー(だっけ?)みたいなのどうした?
0114デフォルトの名無しさん
2008/08/11(月) 19:44:210115デフォルトの名無しさん
2008/08/11(月) 19:46:160116デフォルトの名無しさん
2008/08/11(月) 20:08:47ある
http://www.ietf.org/rfc/rfc4627.txt
>>115
ない
http://www.google.co.jp/search?hl=en&q=OpenRJ
0117デフォルトの名無しさん
2008/08/11(月) 21:01:36思うんだけど皆はどう思う?
0118デフォルトの名無しさん
2008/08/11(月) 21:57:460119デフォルトの名無しさん
2008/08/11(月) 22:45:340120デフォルトの名無しさん
2008/08/11(月) 23:54:28bool onCreate(ref bool handled, LPCREATESTRUCT lpCreateStruct) {
return true;
}
void onDestroy(ref bool handled) {
PostQuitMessage(0);
}
LRESULT wndProc(UINT msg, WPARAM wp, LPARAM lp) {
bool handled = false;
LRESULT result = 0;
mixin msgcrack!(handled, result, msg, wp, lp);
MSG_WM_CREATE(&onCreate);
MSG_WM_DESTROY(&onDestroy);
MSG_WM_SIZE(&onSize);
こんな感じ。まだメッセージクラックでMSG_WM_〜とか作り始めたばっかりだからしょぼいけど、
でもちゃんと動くからよしとしてる。dmd 1.028 + phobos + win32 binding
0121デフォルトの名無しさん
2008/08/12(火) 09:01:24WTLがやってる多重継承の使い方をどういう風にDに落とし込むかで悩んだことがあるのよね
0122デフォルトの名無しさん
2008/08/12(火) 19:46:07なんて所詮、modula2と同様忘れられるさ
0123デフォルトの名無しさん
2008/08/12(火) 19:48:40趣味止まりじゃないってことを見せ付けてくれんか?
0124デフォルトの名無しさん
2008/08/12(火) 20:19:070125デフォルトの名無しさん
2008/08/12(火) 20:34:520126デフォルトの名無しさん
2008/08/12(火) 23:09:200127デフォルトの名無しさん
2008/08/12(火) 23:11:28Dは自分の所のコンパイラ識別子を予約語にしてるのが痛い
0128デフォルトの名無しさん
2008/08/12(火) 23:21:00具体的にどれのことを言ってるんだ?
0129デフォルトの名無しさん
2008/08/12(火) 23:25:23DigitalMarsという予約語がある
GNUはないのに
0130デフォルトの名無しさん
2008/08/12(火) 23:33:34後者かな。予約語とは、とかでググれ。
0131デフォルトの名無しさん
2008/08/12(火) 23:57:50DigitalMarsのコンパイラでGNUがdefineされてたらおかしいだろ…
0132デフォルトの名無しさん
2008/08/13(水) 00:02:01version (DigitalMars)
{
...
}
version (GNU)
{
...
}
両方動作しちゃいます
ってさすがに釣りにマジレス過去悪いな
0133デフォルトの名無しさん
2008/08/13(水) 00:04:29( ゚д゚)ポカーン
ポカーン(゚д゚ )
( ゚д゚ )
0134デフォルトの名無しさん
2008/08/13(水) 00:37:10"DigitalMars"という識別子は「DigitalMars製コンパイラ」という意味以外で使っちゃいけないって
Dの仕様で決められてるんだろ?
でも「GNU製コンパイラ」という意味以外で使っちゃいけないっていう意味の識別子は
仕様にはないんだろ?
そういう意味にしか取れないんだが
0135デフォルトの名無しさん
2008/08/13(水) 00:44:380136デフォルトの名無しさん
2008/08/13(水) 00:47:510137デフォルトの名無しさん
2008/08/13(水) 01:02:180138デフォルトの名無しさん
2008/08/13(水) 01:09:500139デフォルトの名無しさん
2008/08/13(水) 01:11:340140デフォルトの名無しさん
2008/08/13(水) 01:20:14Tangoってどんなん?
0141デフォルトの名無しさん
2008/08/13(水) 01:28:04ぐぐれかす
0142デフォルトの名無しさん
2008/08/13(水) 01:31:440143デフォルトの名無しさん
2008/08/13(水) 01:52:07いや、>>142の言ってるのはもしかして伝説のD3.0系か?
0144デフォルトの名無しさん
2008/08/13(水) 01:58:56破壊度低くても新バージョン認めてやれよw
0145デフォルトの名無しさん
2008/08/13(水) 09:00:19わらかすなwwwwww
0146デフォルトの名無しさん
2008/08/13(水) 09:11:260147デフォルトの名無しさん
2008/08/13(水) 13:49:320148デフォルトの名無しさん
2008/08/13(水) 14:35:390149デフォルトの名無しさん
2008/08/13(水) 15:08:02Exeptionのメッセージに該当箇所が入ってくれれば一番良いのですよね。
assertを例外で拾った場合はソース行も入ってるので、AccessViolation
も同様ならいいなぁとか。
0150デフォルトの名無しさん
2008/08/13(水) 17:29:050151デフォルトの名無しさん
2008/08/13(水) 17:48:51それは早急すぎ。C#がC++++の意味だから、まずはD++を経なければならない…
あと、.net対応ならDマネージ拡張とか、D/CLIとかでもありだな。
0152デフォルトの名無しさん
2008/08/13(水) 17:51:36++++だったんだ#・・・
0153デフォルトの名無しさん
2008/08/13(水) 18:06:220154デフォルトの名無しさん
2008/08/13(水) 18:07:02キャストが不正だった場合、nullが返ってくるということは、
ランタイムで型をチェックしているんですよね
0155デフォルトの名無しさん
2008/08/13(水) 18:11:08Perl/Rubyあたりからだと、やっぱDの方がフレンドリーに思えるな・・・
0156デフォルトの名無しさん
2008/08/13(水) 18:20:34そういうチェックが入るのは、クラスオブジェクトをダウンキャストするときだけでしょ。
0157デフォルトの名無しさん
2008/08/13(水) 19:40:28なるほど、構造体とかならノーコストっすね
ありがとうございます
0158デフォルトの名無しさん
2008/08/13(水) 23:09:49整備しませんか
0159デフォルトの名無しさん
2008/08/13(水) 23:21:360160デフォルトの名無しさん
2008/08/14(木) 00:02:200161デフォルトの名無しさん
2008/08/14(木) 01:12:350162デフォルトの名無しさん
2008/08/14(木) 03:44:41synchronized(o) {
synchronized(o) {
// do something
}
}
こんな感じで同じオブジェクトで入れ子で複数回synchronized呼ぶのは安全ですか?
0163デフォルトの名無しさん
2008/08/14(木) 05:19:04>>161 そんなもんはいらんwwwていうかもう作ってる人いるw
0164デフォルトの名無しさん
2008/08/14(木) 06:57:450165デフォルトの名無しさん
2008/08/14(木) 09:52:17このままop〜Assign系を増やしても根本的な解決にはならんだろ
必要なのは参照じゃね?
0166デフォルトの名無しさん
2008/08/14(木) 10:29:59opStarは何のために増えたんだ?
0167デフォルトの名無しさん
2008/08/14(木) 10:32:500168デフォルトの名無しさん
2008/08/14(木) 10:47:20(____,,--‐‐'''''"''':::::l.川 アイキャンレディゴー
. |(●), 、(●)、.:|川 ゴーウェイ
| ,,ノ(、_, )ヽ、・,,.::::|リリ
0169デフォルトの名無しさん
2008/08/14(木) 20:26:19って流れに乗り遅れすぎだぞ俺
0170デフォルトの名無しさん
2008/08/14(木) 20:35:320171デフォルトの名無しさん
2008/08/14(木) 20:40:030172デフォルトの名無しさん
2008/08/14(木) 21:42:100173デフォルトの名無しさん
2008/08/15(金) 00:29:280174デフォルトの名無しさん
2008/08/15(金) 00:54:04MIcrosoftが開発を発表したDとは
似てもつかないものだし。
我田引水的にいうと、C#などの言語はWindowsプログラミング
に徹した方がいい(MFCはもう古くさい)。
あとは、NativeのC++とC#をいかに透過的に連携させるかに
注力した方がいい。Windowsに関してはMFCよりもC#の方が
明らかにプログラムしやすい。
問題は、C++NativeコードとC#あるいはC++/CLIをいかに
透過的に結合させるかだ。
0175デフォルトの名無しさん
2008/08/15(金) 01:01:360176デフォルトの名無しさん
2008/08/15(金) 01:44:330177デフォルトの名無しさん
2008/08/15(金) 02:07:170178デフォルトの名無しさん
2008/08/15(金) 07:59:03// 通る
interface A { static A opCall(); }
// 通る
interface A { static A opCall(); }
class Z : A { }
// 通る
interface A { static A opCall(); }
class Z : A { static S opCall() { return new S; } }
// A.opCallが未定義であるとリンカが文句を言う
interface A { static A opCall(); }
class Z : A { }
0179デフォルトの名無しさん
2008/08/15(金) 08:02:27ttp://www.digitalmars.com/d/archives/digitalmars/D/bugs/2612.html
ttp://www.digitalmars.com/d/archives/digitalmars/D/37031.html
0180デフォルトの名無しさん
2008/08/15(金) 08:03:020181デフォルトの名無しさん
2008/08/15(金) 08:10:44interface A { static A opCall(); }
class Z : A { }
auto A = A();
と書いた場合A.opCallが未定義であるとリンカが文句を言う
0182デフォルトの名無しさん
2008/08/15(金) 08:39:55あたりまえじゃないの?
どこで定義しているの?
0183デフォルトの名無しさん
2008/08/15(金) 08:43:11当たり前なんだけど、
「そもそもinterfaceにstatic関数を定義できないのが正しいんじゃね?」
という議論が>179。
0184デフォルトの名無しさん
2008/08/15(金) 12:04:57宣言した箇所で定義をつけてやらないと困ったことになるのは当然だろう。
インターフェイスをC++的に考えると純粋抽象クラスだから、静的関数を持てても問題ないと思う。
0185デフォルトの名無しさん
2008/08/15(金) 12:23:18static virtualとかvirtualなコンストラクタとかが
あってもいいのではなかろうかと常々思う。
0186デフォルトの名無しさん
2008/08/15(金) 12:56:53待て待て後半で前半が覆されてるぞ
インターフェイスをC++的に考えると純粋抽象クラスだから,実装(静的関数)を持てちゃまずいんじゃないのか
>>185
static virtualは全然わからんが
virtualなコンストラクタって何のインスタンスができるんだ?
ビルトインでオブジェクトファクトリパターンでもやるのか?
できるのかなそれ
0187デフォルトの名無しさん
2008/08/15(金) 13:39:23静的関数はオーバーライドできないから、クラスの抽象性とは関係ない、といいたかった。
0188デフォルトの名無しさん
2008/08/15(金) 13:45:03静的関数を仮想化できて何の役に立つの?
静的関数は名前の通りコンパイル時に静的に解決されるから意味ないと思うけど。
0189デフォルトの名無しさん
2008/08/15(金) 13:55:17The Death of D. (Was Tango vs Phobos)
のあたりの、あらすじを教えて
よくわからなくなってきた
0190デフォルトの名無しさん
2008/08/15(金) 15:59:43static 関数では対象となるインスタンスがないのにどう振る舞いを変えろと?
根本的にオブジェクト指向が分かってないんじゃないの?
0191デフォルトの名無しさん
2008/08/15(金) 17:47:11interfaceと同じスコープにファクトリを据えたいのは山々なんだよね
0192デフォルトの名無しさん
2008/08/15(金) 18:31:13Tango vs Phobos!?
興味深い
0193デフォルトの名無しさん
2008/08/15(金) 18:51:00そもそも、インスタンスがないのに、
ファクトリが自分がどの型であるべきなのかどうやって認識するの?
0194デフォルトの名無しさん
2008/08/15(金) 19:01:57Phobos、Tangoに続きTimpoライブラリをこのスレで作る…!?
0195デフォルトの名無しさん
2008/08/15(金) 19:32:01ファクトリって何か分かってる?
0196デフォルトの名無しさん
2008/08/15(金) 19:45:290197デフォルトの名無しさん
2008/08/15(金) 19:46:140198デフォルトの名無しさん
2008/08/15(金) 19:50:52ウォルターが
Tangoのパブリックドメインやら
いろいろ言っているようなんだけど
0199デフォルトの名無しさん
2008/08/15(金) 20:06:29「PhobosにTangoマージしてくれ」
→をる「ライセンスをPhobosとコンパチにしてもらえないと困る」
0200193
2008/08/15(金) 20:17:15おいおい、マジでそんなあほなこと言ってるのか。
インターフェースは内部実装知らないから意味があるんだぞ。
内部実装知らない状態で、インターフェースにあるファクトリは何を作るべきなのか?
と聞いているんだが。
実際のところ、
interface IFoo
{
IFoo createObject();
}
として、
IFoo newObj = foo.createObject();
くらいでファクトリは十分なんじゃねーの?
それ以外でどういうものを期待してるんだ?
0201デフォルトの名無しさん
2008/08/15(金) 20:25:42>>200の話はごもっとも
0202デフォルトの名無しさん
2008/08/15(金) 20:35:08そういう話だとすると、
それはそれ自体が実装だから元々インターフェースに置くべきではない。
class FooFactory
{
IFoo createObject(string fooType);
}
で十分でしょ。
interface に置いて何かが劇的に変わるかというと変わらない。
それにメンテナンス性が下がるよ。
インターフェースは原則として不変であるべきなのに、
新しい class FooNewClass とか追加したら、そのたびに interface の中いじることになる。
0203デフォルトの名無しさん
2008/08/15(金) 20:39:530204デフォルトの名無しさん
2008/08/15(金) 20:56:14その場合、インターフェースが「内部状態」を持つことになりますが、
その辺についてはどうお考えで?
0205デフォルトの名無しさん
2008/08/15(金) 21:03:36べつにいいじゃん。
ただの抽象クラスでしょ。
0206デフォルトの名無しさん
2008/08/15(金) 21:12:340207デフォルトの名無しさん
2008/08/15(金) 21:22:080208デフォルトの名無しさん
2008/08/15(金) 21:26:48リンクエラーになるくらいならコンパイル時にエラーになってもよいと思う
0209デフォルトの名無しさん
2008/08/15(金) 21:43:26どうちがうのか説明してくれ
0210デフォルトの名無しさん
2008/08/15(金) 21:44:310211デフォルトの名無しさん
2008/08/15(金) 21:48:26契約が自身に関係するメタ的な機能を持ってるのは何も問題があるようには思わない。
0212デフォルトの名無しさん
2008/08/15(金) 21:52:47インターフェースは、ポリモーフィズム(多態性)の実現のために存在する。
鳥と飛行機は両方飛ぶけど、
鳥 is a 飛行機にも、飛行機 is a 鳥にもならない。
でも、インターフェースとしては両方 Flyable なわけですよ。
まともなオブジェクト指向やってる人なら常識なんだけどねぇ。
0213デフォルトの名無しさん
2008/08/15(金) 21:54:03それは抽象クラスとの違いの説明にはなってないよ
鳥 is a FlyingObject
飛行機 is a FlyingObject
0214デフォルトの名無しさん
2008/08/15(金) 22:07:54>>213 みたいな勘違いをやりやすいんだよね。
実際そういう変な継承で物を作って、後で困るケースが多々ある。
で、抽象クラスというのは
鳩 is a 鳥
という関係での鳥にあたる。
ただの派生元クラスじゃんということにもなるけど、
実装を一部持たないものが抽象クラスになる。
まだ、中身はわからないけど、
そのクラスにはそういう属性や振る舞いがあることは確かだ
というためにある。
0215デフォルトの名無しさん
2008/08/15(金) 22:11:11class A {
virtual void foo();//仮想関数
virtual void bar() = 0;//純粋仮想関数
}
仮想関数を1つでも持つクラスは抽象クラス(abstract class)という
すべてのメンバ関数が純粋仮想関数のクラスを純粋抽象クラス(==interface)という
これでおk?
0216デフォルトの名無しさん
2008/08/15(金) 22:13:46という継承が実際後で必要になってきてから、
飛行機 is a FlyingObject, 鳥 is a FlyingObject
という継承になってたりすると、あれー? ってことになる。
飛行機が物を食べるかどうかとか、
鳥にハンドルが付いているかどうかとか、真剣に考えたりすることに。
このへんは物をどう捉えるのかのセンスが問われるねぇ。
0217デフォルトの名無しさん
2008/08/15(金) 22:14:020218デフォルトの名無しさん
2008/08/15(金) 22:23:20何がインスタンス化されるのがお好みですか?
と言えばわかりますか?
0219デフォルトの名無しさん
2008/08/15(金) 22:23:49説明うまいね
0220デフォルトの名無しさん
2008/08/15(金) 22:27:29多重継承が必要という話ですね、分かります。
0221デフォルトの名無しさん
2008/08/15(金) 22:32:18飛行機 extends a FlyingObject
鳥 extends a FlyingObject
0222デフォルトの名無しさん
2008/08/15(金) 22:36:05飛行機 is a 機械
ロボット is a 機械
ロボットは空を飛び、飛行機は原子力で動くわけですね。
0223デフォルトの名無しさん
2008/08/15(金) 22:37:57何でもいいから飛べる奴が欲しい。
0224デフォルトの名無しさん
2008/08/15(金) 22:43:08窪塚洋介がインスタンス化されました。
0225デフォルトの名無しさん
2008/08/15(金) 23:18:15揚力得られずに自由落下するだけのは飛ぶとは言わんと思うが。
0226デフォルトの名無しさん
2008/08/15(金) 23:35:16そんな変な例を出すから気持ち悪いだけで、
interface Singable { void sing(Song song); }
interface Danceable { void dance(Dance dance); }
class Singer : Singable;
class Dancer : Danceable;
class Otaku : Singable, Danceable;
という構成のときに、なんか歌が与えられて誰か適当に選んで歌って欲しいときに、
auto singable = Singable.createObject(song.genre);
singable.sing(song);
と書きたい。
もっとも、SingableFactoryを別に用意してもいいけど、
俺はSingableのメンバになってたほうが構文上美しいと思う。
0227デフォルトの名無しさん
2008/08/15(金) 23:57:29「適当に選んで」
ってのが実装になっちゃうので、
その実装は色々考えられちゃうわけですが。
0228デフォルトの名無しさん
2008/08/16(土) 00:09:17それにこれは静的メソッドでファクトリを実装することの問題点であって、
インターフェイスのメンバでファクトリを実装することによる問題じゃない。
0229デフォルトの名無しさん
2008/08/16(土) 00:13:34マージされるのかな?
ワクワクしてきた
0230デフォルトの名無しさん
2008/08/16(土) 00:21:27「インターフェースのメンバでファクトリを実装する問題」であるなら、
インスタンスが知っている情報に基づいてファクトリが動くべきで、
普通は、インスタンスの型と同じ型のまっさらなインスタンスができるか、
インスタンスのコピーかそれに毛が生えたようなものができるかってとこでしょう。
多態化しなきゃよいっていうなら、
素直に SingableFactory クラス作ればよいって返すだけなんだけど。
interface Singable に static なファクトリ乗っけても
後で多態化が必要だとわかった時に後悔するだけだ。
0231デフォルトの名無しさん
2008/08/16(土) 00:34:56インターフェースの静的メンバでファクトリを実装する問題であるのは確かだけど、
問題になってるのはインターフェイスだからではなくて静的メンバだからでしょう。
ファクトリを多態化できないという同じ問題は、
抽象クラスの静的メンバでファクトリを実装したときにも起こりうるよね。
でも、それでも実用上問題にならないことはあるんじゃないかな。
名前から一意にクラスが決まる場合とか。
0232デフォルトの名無しさん
2008/08/16(土) 01:05:38どんなスパゲッティコードでも動けばオッケーってことになりますよ。
(実際そういうなんちゃってオブジェクト指向で悩まされるんだ…)
「インターフェースは実装を一切知らないってのがミソ」
ということが分かっている人なら、
インターフェースに実装を置こうなんて絶対思わんでしょう。
0233デフォルトの名無しさん
2008/08/16(土) 01:07:340234デフォルトの名無しさん
2008/08/16(土) 02:28:48そんなことやったこと無いけど、こうして議論になってるから
考えてみた。で、わからん。
あと、Java で常々思ってたけど、
インターフェースには DBC みたいなことを書けないんだよね。
それが書けるとうれしいんじゃないかなーとか。
どうおもう?
0235デフォルトの名無しさん
2008/08/16(土) 02:41:57ttp://lists.puremagic.com/pipermail/digitalmars-d/2008-August/thread.html
誰か「せっかくだから D2.0 でPhobos に Tango をマージしようぜ?」
うぉる「(ライセンス的に)Phobos は純潔なのよ!どこのものとも分からない Tango を
婿になんて迎えられないわ!前は勝手に Phobos が Tango のコードを盗んだなんて言いだす輩に
絡まれたんだからね、そんなのは Tango の中の人を洗い出して権利関係を明確にしてからの話だわ。
…べ、別に Tango と結婚させたくないわけじゃないし、こっちはもう Phobos のコードを
Tango にマージする許可はもう与えてあるんですからねっ!」
だいたい意訳するとこんな感じ?間違ってる?Phobos はコードを書き換えるときに
ttp://www.digitalmars.com/d/contributions.html
の手順を踏んでコントリビュータを明確にしてるんだけど、
Tango はそこが曖昧だからウォルたんは渋ってるってとこなんだろうな。
0236デフォルトの名無しさん
2008/08/16(土) 03:33:07そんな、ツンデレなウォルター嫌だ
でも、そんな感じの話が書いてあった
0237デフォルトの名無しさん
2008/08/16(土) 09:03:200238デフォルトの名無しさん
2008/08/16(土) 09:29:29ヲルさんはいい人だというのがわかったw
意訳ありがとう
0239デフォルトの名無しさん
2008/08/16(土) 09:36:580240デフォルトの名無しさん
2008/08/16(土) 10:15:07{
}
僕の方がOO理解してるんだいって主張は他でやってくれんか?
0241185
2008/08/16(土) 10:22:34対応フォーマットを追加したければ、Extractorを増やしてExtractorsに追加するだけ、みたいな。
Extractorsは可変長テンプレート引数にしたほうがいいかも。
class ExtractorCreator{
alias TypeTuple!(TarExtractor, UnzipExtractor, LhaExtractor) Extractors;
Extractor create(Path archiveFile){
foreach(ExtractorType; Extractors){
if(ExtractorType.isSupport(archiveFile)){
return new ExtractorType();
}
throw new UnsupportedArchiveTypeException();
}
}
class Extractor{
static string[] SupportSuffixes();
static bool isSupport(Path archiveFile){ return SupportedSuffixes.contains(archiveFile.suffix); }
void extract(string archiveFile);
}
class TarExtractor{
static override string[] SupportSuffixes(){ return [".tar", ".tar.gz"]; }
override void extract(string archiveFile){ exec("tar xf " ~ archiveFile); }
}
... 略
派生クラスに対して「自身のメタ情報を表明せよ」って強制できれば、いい感じに書けないかなぁって。
0242デフォルトの名無しさん
2008/08/16(土) 11:43:53適当なキャラ付けで他人を小馬鹿にして興奮するオナニーも他でやってね。
中二病の子までDやるのか、最近は。
0243デフォルトの名無しさん
2008/08/16(土) 11:57:130244デフォルトの名無しさん
2008/08/16(土) 13:22:100245デフォルトの名無しさん
2008/08/16(土) 15:18:29class FooError:Error{
this(string message){super(message);}
static class XXX:FooError{
}
static class YYY:FooError{
}
}
throw new FooError.XXX();
0246デフォルトの名無しさん
2008/08/16(土) 15:28:310247デフォルトの名無しさん
2008/08/16(土) 15:46:51class test{
extern(C++) static int x(){return 10;}
}
はC++の
namespace test{
int x(){return 10;}
}
と同等。
0248デフォルトの名無しさん
2008/08/16(土) 16:22:26class ExtractorCreator{
static Extractor[] es;
static void addExtractor(Extractor e){es ~= e;}
static Extractor create(Path archiveFile){
foreach(e; es)if(e.isSupport(archiveFile))return e;
throw new UnsupportedArchiveTypeException;
}
}
class Extractor{
abstract string[] SupportedSuffixes();
bool isSupport(Path archiveFile){ return SupportedSuffixes().contains(archiveFile.suffix); }
abstract void extract(string archiveFile);
}
class TarExtractor : Extractor{
static this(){ ExtractorCreator.addExtractor(new TarExtractor); }
override string[] SupportedSuffixes(){ return [".tar", ".tar.gz"]; }
override void extract(string archiveFile){ exec("tar xf " ~ archiveFile); }
}
class ZipExtractor : Extractor{
static this(){ ExtractorCreator.addExtractor(new ZipExtractor); }
override string[] SupportedSuffixes(){ return [".zip"]; }
override void extract(string archiveFile){ exec("unzip " ~ archiveFile); }
}
void main(){
string file = "hoge.tar";
Extractor e = ExtractorCreator.create(new Path(file));
e.extract(file);
}
0249デフォルトの名無しさん
2008/08/16(土) 23:56:360250デフォルトの名無しさん
2008/08/17(日) 00:15:27http://www.ksky.ne.jp/~seahorse/cpp/staticvirtual.html
一応確かに考えられなくはないけど、これみたいな問題はDにはないわけ?
…まぁこの場合こんな設計するほうが悪いのかもしれないけど。
0251デフォルトの名無しさん
2008/08/17(日) 00:30:450252250
2008/08/17(日) 01:33:43オブジェクトは、newされたとき、以下によると
ttp://www.digitalmars.com/d/2.0/class.html#constructors
1.メモリの割り当て
2.データ初期化・vtbl[]初期化
3.コンストラクタ呼び出し
4.普遍条件呼び出し
のステップが行われる。2番と3番の順番の理由から、実はコンストラクタの時点で仮想関数を呼び出すことが可能。(でいいのか?)
よって、以下のコードは不正ではない…(?) ちょっと自信ないけど。
http://codepad.org/P6dxfzku
0253デフォルトの名無しさん
2008/08/17(日) 02:00:18http://www.nicovideo.jp/watch/sm3372002
0254デフォルトの名無しさん
2008/08/17(日) 15:59:46可能もなにも普通だと思うんだが・・
0255デフォルトの名無しさん
2008/08/17(日) 16:38:32せめてその時は実行時じゃなくてコンパイル時にもポリモーフィズムが利用できていいはず。
オブジェクトがクラスに、普通のメソッドがstaticメソッドに、
メソッド呼び出しがテンプレートのインスタンス化に置き換わる感じ。
>>234
むしろインターフェースにこそ契約書きたいよね
0256デフォルトの名無しさん
2008/08/17(日) 17:14:24全部見てしまった
俺の時間を返せw
0257デフォルトの名無しさん
2008/08/17(日) 21:12:08アップキャストもチェック入りダイナミックキャストでした
0258デフォルトの名無しさん
2008/08/17(日) 21:13:14なんやて…
0259デフォルトの名無しさん
2008/08/17(日) 21:17:19それどういう文法になるんだ
0260デフォルトの名無しさん
2008/08/17(日) 22:37:29たんにbodyがなければいいんじゃね?
0261デフォルトの名無しさん
2008/08/17(日) 22:46:26デバッグコンパイルするとラッパクラスがこっそりできることになるんだろうね。
0262デフォルトの名無しさん
2008/08/17(日) 22:53:06>>259は前半四行にたいする質問だった。
0263デフォルトの名無しさん
2008/08/18(月) 17:38:45ブレークポイントを置いてるのに引っかからないでこうなる
Starting debugger:
done
Debugger finished with status 1
0264デフォルトの名無しさん
2008/08/18(月) 20:02:520265デフォルトの名無しさん
2008/08/19(火) 04:27:19コンパイルできない…どうやったらコンパイルできるんだ?これ。
Windows Vista 64bit SP1, dmd2.018, tango r3889, dsss 0.75
この環境で
XXX\dmd\import\tango>dsss build
ってやってみたけどコンパイルできず。
tango\sys\win32\Types.di(288): template instance _PCHAR!("ServicesActive") does not match template declaration _PCHAR(char[] a)
とか出る。ちょっといじってこれが通るようになってもほかのところでエラー出たりdmd死んだり…
もしかしてこれってまだコンパイルできる段階じゃないのかな?
0266263
2008/08/19(火) 10:26:33D言語普及のために詳しい使い方でもHPに書いてみるか
0267デフォルトの名無しさん
2008/08/19(火) 15:26:38これか
auto completionがどれほどなのかやってみよう
0268デフォルトの名無しさん
2008/08/19(火) 16:21:03PoseidonのDebuggerにddbg使えた?なんかうまくいかん
Ddbg 0.11.3 beta - D Debugger
0269デフォルトの名無しさん
2008/08/19(火) 17:02:020270デフォルトの名無しさん
2008/08/19(火) 20:30:500271デフォルトの名無しさん
2008/08/20(水) 00:59:370272デフォルトの名無しさん
2008/08/20(水) 01:04:140273デフォルトの名無しさん
2008/08/20(水) 04:05:23やっぱWinのAPIたたくときにマルチバイトを考慮していないのが原因なのかな…
0274デフォルトの名無しさん
2008/08/20(水) 10:02:27使えるぞ?
MSゴシックを選択して文字セット欧文のままってオチじゃないよな?
0275273
2008/08/20(水) 14:42:00MS ゴシックにしただけだと等幅にならない…
マルチバイト文字の混じらないFixedSysとか指定するとうまく等幅になるっぽいけど。
他になんか設定する必要があるのか?
0276デフォルトの名無しさん
2008/08/20(水) 15:51:36キーワードで太字になると等幅が崩れるみたいだから、太字を切ってみたらうまくいった
0277デフォルトの名無しさん
2008/08/20(水) 15:57:49void main() {
writeln(typeid(typeof(myint.max)));
}
typedef型のmax/minが元の型になってしまうんだけど、
仕様的にはどうなのかなあ。
0278デフォルトの名無しさん
2008/08/20(水) 16:34:03それはおかしいんじゃないか
0279デフォルトの名無しさん
2008/08/20(水) 16:36:290280デフォルトの名無しさん
2008/08/20(水) 16:43:19構造体でよくね。
0281デフォルトの名無しさん
2008/08/20(水) 22:58:55D言語使っているとC++とごっちゃになって困ったりしない?
自分はしばらく使っていると、細かいところでよく間違えるんだけど、
みんな問題ないのかな?
0282デフォルトの名無しさん
2008/08/21(木) 01:44:590283デフォルトの名無しさん
2008/08/21(木) 03:17:58いちいち、
auto twice(T)(T x) { return x*2; }
と書かなくても、
auto twice(auto x) { return x*2; }
と書けたらいいのに。
あと、ラムダ式もほしい
auto twice = (int x) => x * 2;
さらに、ジェネリックラムダ式とか…
auto twice = (T)(T x) => x * 2;
auto twice = (auto x) => x * 2;
auto twice = x => x * 2;
0284デフォルトの名無しさん
2008/08/21(木) 03:30:51それは構文上問題ないからいいだろw
auto var = Foo(arg1, arg2);
とか書いて怒られるのはよくある
でnewつける
C++に戻ると、クラスや構造体のフィールドの定義で初期化を書いて怒られる
0285デフォルトの名無しさん
2008/08/21(木) 03:40:13template OpCallConstructor() {
static typeof(this) opCall(Args)(Args args) {
return new typeof(this)(args);
}
}
0286デフォルトの名無しさん
2008/08/21(木) 08:04:13(Args)は(Args...)にしとくべきだな
0287デフォルトの名無しさん
2008/08/21(木) 09:09:52mixinが必要なのがちょっと面倒だな。
勝手にインジェクションするようなテンプレートは書けるだろうか?
0288デフォルトの名無しさん
2008/08/21(木) 11:30:40auto twice = (int x){return x * 2;};
alias std.functional.unaryFun!("a*2") twice;
まあ、後者はクロージャじゃないし色々使いにくいけども…
0289デフォルトの名無しさん
2008/08/23(土) 01:33:14writef("%f %1.2f",a,a);
結果:
0 3.14
これってバグ?仕様?(gdc 0.24 mingw)
0290デフォルトの名無しさん
2008/08/23(土) 08:51:58「ヲルさん!うは!まじかよ!またコンパイル通らねぇww」
あの感覚はもう味わえないのかな
0291デフォルトの名無しさん
2008/08/23(土) 09:06:07最近も、Path周りでコンパイルは通るけど実行時にエラーをはきまくるという惨事が体験できた。
いつになったら1.0が出るのか…いつになったらD2.0に対応するのか…wktkが止まらない。
0292デフォルトの名無しさん
2008/08/23(土) 09:11:000293デフォルトの名無しさん
2008/08/23(土) 11:11:330294デフォルトの名無しさん
2008/08/23(土) 11:42:14うぉるタンうおっち
0295デフォルトの名無しさん
2008/08/23(土) 13:07:09標準的な方法はなっしんぐ?
0296デフォルトの名無しさん
2008/08/23(土) 13:10:160297デフォルトの名無しさん
2008/08/23(土) 15:58:52ごく単純な FreeImageBitmap ってのが用意されてるみたいだから、これを
ベースに必要な部分を継ぎ足してけばいいんじゃないかな。
もちろん ImageMagick 叩いたほうが場合によってはお手軽だろうけど。
0298デフォルトの名無しさん
2008/08/23(土) 16:41:470299デフォルトの名無しさん
2008/08/24(日) 02:05:240300デフォルトの名無しさん
2008/08/24(日) 03:04:540301デフォルトの名無しさん
2008/08/24(日) 03:34:280302デフォルトの名無しさん
2008/08/24(日) 05:29:29一応手元にpngを読み書き編集表示(要opengl)(パレット利用不可)するライブラリがあるが、
これでは使い勝手が悪いのでなんとも。
ほかのも読めるようにしたいが、自分では使わんので放置してるなあ。
なんか標準的に使えるものをコミットしたいが……
0303デフォルトの名無しさん
2008/08/24(日) 10:11:360304デフォルトの名無しさん
2008/08/24(日) 11:19:310305デフォルトの名無しさん
2008/08/24(日) 12:35:35ビルドしてインストールしたものを使うと
object.d: module object cannot read file 'object.d'
とか言われてしまう。
cc1dをsourceforgeの0.24で置き換えると普通に動くのだが、
どうやらcc1dがコンパイラ本体らしいので意味がない・・・
この辺はまだまだ十分マゾいと思った。
0306デフォルトの名無しさん
2008/08/25(月) 03:19:090307デフォルトの名無しさん
2008/08/25(月) 03:24:50引数の型が同じでも、delegateのほうが余分に一つ引数を取るからじゃないかな。
0308デフォルトの名無しさん
2008/08/25(月) 05:16:37フレームポインタをnullにすればいいだけなんじゃ…
----
import std.stdio;
void main(){
static int func(int a, int b){return a+b+1;};
int delegate(int,int) dg;
// いちいちこうやらないと突っ込めないのが面倒…
// dg = &func; これで通れば関数の引数とかもっと楽になるのに…
dg = (int a, int b){return func(a,b);};
writef(dg(2,5));
}
----
って思ってよく見てみたら、
今後の方向性: 関数ポインタとdelegateの構文を共通にして、 相互に互換性を持たせる予定です。
ってのがあるのな。早くやってほしいな。
0309デフォルトの名無しさん
2008/08/25(月) 05:32:09フレームポインタ/thisポインタは一番前だから、そういうわけには行かない
0310デフォルトの名無しさん
2008/08/25(月) 05:34:180311デフォルトの名無しさん
2008/08/25(月) 16:44:57となっていてSwitchToFiberがバイパスされる。const _WIN32_WINDOWS = 0x410とすればいけるはずだか
これはどこに記述すればいいの。自分の作ったファイルだとmoduleが違うので効果無かった。
0312デフォルトの名無しさん
2008/08/25(月) 21:27:10version=WindowsXP
ってコンパイラスイッチで指定すればOKなはず。
0313デフォルトの名無しさん
2008/08/25(月) 22:59:10それでもいいや
D3 is written by D2 って感じでさ
熱い更新が欲しい
0314デフォルトの名無しさん
2008/08/26(火) 08:31:47ありがとう。いけた。
0315デフォルトの名無しさん
2008/08/26(火) 23:06:092ヶ月くらいかかった。
罠が多すぎる・・・
0316デフォルトの名無しさん
2008/08/26(火) 23:14:310317315
2008/08/27(水) 00:48:42ポイントが多すぎて一々全部覚えていないので、
覚えているものをいくつか。記憶違いがあったらすまん。
・インストーラ版のmsysを使うとうまくビルドできない(vista特有?)ので1.0.11のファイルを全て落として手動インストール
・m4、automakeは最新のものをソースからビルド。sourceforgeのものを使ったところ謎のエラー。
・gcc-4.1.2、gdc(Rev.243)の組み合わせでうまくいった。他のバージョンは不明。
・../configure --prefix=c:/msys/gdc --disable-shared --enable-languages=c,d --host=mingw32 --target=mingw32 --with-gnu-ld --with-gnu-as --enable-threads --disable-nls --disable-win32-registry --disable-shared --enable-sjlj-exceptions
・--prefixはwindows風のパスを与えないと、ビルド後にphobosが見つけられない不良品になる
・ビルドフォルダ/gcc/Makefile中のORIGINAL_LD_FOR_TARGETがおかしくエラーで止まるので"ld"に修正
・printf("%n")がダメらしく(vista特有)無限ループに陥るのでgcc/genmodes.cを修正。放っておくとディスクを食い尽くすので注意
・com.dのComObjectで謎のエラーが出るが、コンパイルオプション-O2を消すと通る
0318デフォルトの名無しさん
2008/08/27(水) 00:58:190319デフォルトの名無しさん
2008/08/27(水) 11:35:28最高すぐる
0320デフォルトの名無しさん
2008/08/27(水) 14:59:590321デフォルトの名無しさん
2008/08/27(水) 16:47:010322デフォルトの名無しさん
2008/08/28(木) 18:44:06gdc のソース読むしかないのか。
0323デフォルトの名無しさん
2008/08/28(木) 19:06:300324デフォルトの名無しさん
2008/08/28(木) 19:19:11結構いけそう。
ttp://www.dsource.org/forums/viewtopic.php?t=4155
0325デフォルトの名無しさん
2008/08/28(木) 19:41:11重いDescentよりも軽いPoseidonのほうに期待している俺としては朗報だ…
0326デフォルトの名無しさん
2008/08/28(木) 20:18:35完全日本語になったというわけでもないし
0327デフォルトの名無しさん
2008/08/28(木) 20:47:40Poseidon最新版はいいね
0328デフォルトの名無しさん
2008/08/29(金) 01:47:09今日、職場で破壊的な仕様変更があったんです。
この一年の仕事が全てダメになるようなそんな変更。
当然、みんな怒りました。
誰の口からも出るのは愚痴、愚痴、愚痴。
でも、俺には
そいつにうぉるたんが降臨したんだ、うぉるたん、ラブ!(・∀・)
って思えたんだ。
こんな心に余裕のある人間にしてくれてありがとう、D言語
0329デフォルトの名無しさん
2008/08/29(金) 01:48:240330デフォルトの名無しさん
2008/08/29(金) 03:51:23そのプロジェクトは俺の生活インフラに関係ないと信じたい
0331デフォルトの名無しさん
2008/08/29(金) 11:59:28俺はまだコードを書いていていいんだ!
気に入らないところを直すチャンスだ!
と考えたらいいとかなんとか乙
0332デフォルトの名無しさん
2008/08/29(金) 13:02:18まあ破壊的変更がなくなるほど自コードのメンテナンスも必要なくなっていく……
pureマダー?
0333デフォルトの名無しさん
2008/08/29(金) 14:33:410334デフォルトの名無しさん
2008/08/29(金) 16:33:010335デフォルトの名無しさん
2008/08/29(金) 16:53:520336デフォルトの名無しさん
2008/08/29(金) 19:00:430337デフォルトの名無しさん
2008/08/29(金) 19:21:140338デフォルトの名無しさん
2008/08/30(土) 04:54:270339デフォルトの名無しさん
2008/08/30(土) 19:09:530340デフォルトの名無しさん
2008/08/30(土) 19:17:57到底なりえないと感じる。あんまり使われてないのかなぁ。
0341デフォルトの名無しさん
2008/08/30(土) 19:40:480342デフォルトの名無しさん
2008/08/30(土) 20:21:220343デフォルトの名無しさん
2008/08/30(土) 20:27:31auto x = { asm { nop; } };
}
デリゲートリテラルのなかにasm書いたらDMDが落ちる…
auto x = delegate(){ asm { nop; } }; //もダメ。
auto x = delegate void(){ asm { nop; } }; //こっちは大丈夫
ついで、
auto x ={ asm {} }; //はなぜかシンタックスエラー
0344デフォルトの名無しさん
2008/08/31(日) 02:50:52http://codepad.org/hYMtPbx0
これでもおかしいみたいだけど
void main() { asm { nop ; } }
0345デフォルトの名無しさん
2008/08/31(日) 11:45:090346デフォルトの名無しさん
2008/08/31(日) 12:48:450347デフォルトの名無しさん
2008/08/31(日) 12:59:13単純にリストビュー使いたいだけなのに、
自分で定義してやらないといけない構造体とかが
けっこうあるわ
0348デフォルトの名無しさん
2008/08/31(日) 17:19:30絶望した。
0349デフォルトの名無しさん
2008/08/31(日) 19:18:490350デフォルトの名無しさん
2008/09/01(月) 20:02:060351デフォルトの名無しさん
2008/09/01(月) 20:19:140352デフォルトの名無しさん
2008/09/01(月) 20:47:420353デフォルトの名無しさん
2008/09/01(月) 22:38:21OMFやらimplibの罠やら勘弁してくれ
0354デフォルトの名無しさん
2008/09/01(月) 23:54:36phobos の trunk がソースだよ。
http://www.dsource.org/projects/phobos/browser/trunk/docsrc/changelog.dd
0355デフォルトの名無しさん
2008/09/02(火) 01:01:110356デフォルトの名無しさん
2008/09/02(火) 01:09:180357デフォルトの名無しさん
2008/09/02(火) 10:15:33そんなとこでも更新チェックできるんだな
0358デフォルトの名無しさん
2008/09/02(火) 15:48:070359デフォルトの名無しさん
2008/09/02(火) 17:05:200360デフォルトの名無しさん
2008/09/03(水) 16:23:170361デフォルトの名無しさん
2008/09/03(水) 19:16:29* Added struct constructors.
* Special member functions _ctor, _dtor, etc., now have two leading _ in order to not conflict with the user identifier space.
Bugs Fixed
* Bugzilla 1322: foreach bypasses invariant
* Bugzilla 1615: inout is allowed in foreach of string literal
* Bugzilla 1627: ICE with a method called _ctor
* Bugzilla 1633: Nonsensical "C style cast illegal" message with !is
* Bugzilla 1771: dmd fails to execute on linux
* Bugzilla 1773: excessively long integer literal
* Bugzilla 1785: Mixing in an incorrect array literal causes infinite loop.
* Bugzilla 2176: Assertion failure: 'sz == es2->sz' on line 1339 in file 'constfold.c' (concatenating strings of different types)
* Bugzilla 2183: Bad formatting in std.c.stdlib
* Bugzilla 2190: toHash documentation is deprecated [D2.0]
* Bugzilla 2232: DMD generates invalid code when an object file is compiled -inline
* Bugzilla 2241: DMD abort
* Bugzilla 2243: const bool = is(function literal), badly miscast
* Bugzilla 2262: -inline breaks -lib library
* Bugzilla 2286: movmskpd compiled incorrectly
* Bugzilla 2287: std.conv should accept structs defining toString
* Bugzilla 2289: Stack overflow on very large BigInt to string.
* Bugzilla 2308: CTFE crash on foreach over nonexistent variable
* Bugzilla 2311: Static destructors in templates are never run
* Bugzilla 2314: Crash on anonymous class variable instantiation
* Bugzilla 2316: std.file docs are out of date
* Bugzilla 2317: asm offsetof generates: Internal error: ../ztc/cod3.c 2651
0362デフォルトの名無しさん
2008/09/03(水) 19:44:210363デフォルトの名無しさん
2008/09/03(水) 20:15:58原題はLispだったと思うけど。
0364デフォルトの名無しさん
2008/09/04(木) 01:08:09継承には opDot を使うとか。
0365デフォルトの名無しさん
2008/09/04(木) 03:54:000366デフォルトの名無しさん
2008/09/04(木) 06:12:160367デフォルトの名無しさん
2008/09/04(木) 07:33:53vtblないから仮想化できない
0368デフォルトの名無しさん
2008/09/04(木) 09:27:52struct S {
private int x;
this(int x) {
writeln("S.__ctor");
this.x = x;
}
static S opCall(int x) {
writeln("S.opCall");
S s;
s.x = x;
return s;
}
}
void main(){
S s = 100; // (1) S.opCall
s = S(200); // (2) S.__ctor
s = *new S(300); // (3) S.__ctor
}
たぶんバグだが、opCallを定義しないと(1)で100が迷子になる。
0369デフォルトの名無しさん
2008/09/04(木) 09:31:51static typeof(*this) opCall(Args...)(Args args) {
return typeof(*this)(args);
}
とか書いとくといいと思う。
0370デフォルトの名無しさん
2008/09/04(木) 12:31:520371デフォルトの名無しさん
2008/09/04(木) 12:37:06S(...)ではコンストラクタが優先して呼ばれるようになった。
コンストラクタが一つも定義されてなければopCall、
opCallも定義されてなければ構造体リテラル、になる。
0372デフォルトの名無しさん
2008/09/04(木) 22:17:51よきに計らってくれるというわけか
0373デフォルトの名無しさん
2008/09/05(金) 03:58:17他の Conduit 系も移動するようです。Mango の trunk にも反映済。
さすが Tango、俺らの期待を裏切らない破壊的な変更だぜ。
0374デフォルトの名無しさん
2008/09/05(金) 04:41:35TimeSpanにも変更があるっぽい。
俺もこのstaticな仕様は疑問だったのでこういう破壊的変更は嬉しい。直すのもそんなに苦じゃないし。むしろ悦だし。
0375デフォルトの名無しさん
2008/09/05(金) 09:13:21D2.0への対応もぼちぼちやってるね
2週間前の更新か
0376デフォルトの名無しさん
2008/09/05(金) 18:17:470377デフォルトの名無しさん
2008/09/05(金) 22:10:22C++に慣れてしまった俺にはGCは刺激が強すぎるお
0378デフォルトの名無しさん
2008/09/05(金) 22:34:51っscope
0379デフォルトの名無しさん
2008/09/05(金) 22:44:16scopeはメンバ変数には使えないんじゃないか?
0380デフォルトの名無しさん
2008/09/05(金) 22:52:140381デフォルトの名無しさん
2008/09/05(金) 23:18:570382デフォルトの名無しさん
2008/09/05(金) 23:33:410383デフォルトの名無しさん
2008/09/06(土) 00:04:33気長に待つしかないか。
ライブラリをビルド(dmd -libでビルド)したときにライブラリ内に作られると思われるシンボルの依存関係の記述が、どうやら壊れてしまうみたい。
ライブラリの他の所で使われてはいるが主プログラムからは使われて無いシンボルが、「使われてないシンボルはリンクしない」というリンカの機能で消えちゃう。
そうすると、リンカが落ちると。
0384デフォルトの名無しさん
2008/09/06(土) 00:07:260385デフォルトの名無しさん
2008/09/06(土) 00:09:370386デフォルトの名無しさん
2008/09/06(土) 02:43:570387デフォルトの名無しさん
2008/09/06(土) 03:05:40イエス。
ただし、手動でdeleteした場合や、scope変数のスコープアウトで開放された場合を除く。
0388デフォルトの名無しさん
2008/09/06(土) 03:52:34俺も似たような状態だな。
その推定は向こうでも議論されてるの?今自分で探してみたけど見つからなかった。
リンカがクラッシュするという深刻度の高いバグという気がするので議論されてると思ったのだが。
0389デフォルトの名無しさん
2008/09/06(土) 12:59:29なんでだろ。デストラクタで参照残ってると、なんか不都合があったっけ?
0390デフォルトの名無しさん
2008/09/06(土) 13:17:07たとえば、二つのオブジェクトがお互いをメンバに持っている場合、
ガーベジコレクタはどっちかを先に解放しないといけない。
すると、後に開放された方のメンバは無効だよね。
0391デフォルトの名無しさん
2008/09/06(土) 14:01:470392383
2008/09/06(土) 16:32:03議論は無いみたい。
だからバグレポでも挙げようと、バグが出る最小のコードを見出そうといろいろいじくってみたんだけど、なんか落ちたり落ちなかったりが微妙で、よく分からなかった。
結果分かったのは、383の推定は間違ってるということだけ。
応急処置としていじくったときに、落ちなくなった様子から383の推定をしたんだけど、原因は別にあるみたい。
コードを削って落ちる原因となっている所を見つけても、該当部分を取り出して別個にビルドしてみると落ちなかったりして、原因は分からず。
0393デフォルトの名無しさん
2008/09/06(土) 17:06:20struct S(bool b) if(b) { }
struct S(bool b) if(!b) { }
void main(){
S!(true) s = S!(false)();
}
0394デフォルトの名無しさん
2008/09/06(土) 19:16:41すげぇな・・・これがDか
まったくわからん・・・
0395393
2008/09/06(土) 19:30:18をるたん助けて
struct S { }
struct T { }
void main(){
S s = T();
}
0396デフォルトの名無しさん
2008/09/06(土) 19:32:48void main(){
myint x = 1;
}
構造体型・整数型の変数の初期化子が他の構造体型・整数型の値を受け入れてしまうバグのようだ
0397デフォルトの名無しさん
2008/09/06(土) 19:58:28カオス度が
0398デフォルトの名無しさん
2008/09/06(土) 20:29:19なんじゃこりゃw
これどういう構文なの?久々に来たからさっぱり分からん
>>397
完成してなおカオス度が増してるC++よりはマシじゃね?
0399デフォルトの名無しさん
2008/09/06(土) 20:54:22コーディングがはじめられないことになるんだろうか。まぁ、マイナーなうちは
後方互換捨てて言語のほうを直して対処されるだろうから今から気にしてても
仕方ないのだろうけど。
0400デフォルトの名無しさん
2008/09/06(土) 21:08:240401デフォルトの名無しさん
2008/09/06(土) 21:22:070402デフォルトの名無しさん
2008/09/06(土) 22:12:57互換性をまるっと捨てた方が色々実験できて良いと思う
0403デフォルトの名無しさん
2008/09/06(土) 22:21:080404デフォルトの名無しさん
2008/09/06(土) 22:41:320405デフォルトの名無しさん
2008/09/06(土) 22:48:50if (0 < x < 100)
とか付いちゃったりしてな
0406デフォルトの名無しさん
2008/09/06(土) 22:54:34>>400,402,405
Mの多さに吹いた。
0407デフォルトの名無しさん
2008/09/06(土) 22:55:110409デフォルトの名無しさん
2008/09/07(日) 10:21:44何でもかんでも最終的には構文木になって、LISPになっちゃうんだけどね。
0410デフォルトの名無しさん
2008/09/07(日) 10:40:260411デフォルトの名無しさん
2008/09/07(日) 11:05:08構文木があればlispというのは極論すぎ。
使用者から構文木が完全に隠されてる言語では構文木は本質じゃない。
0412デフォルトの名無しさん
2008/09/07(日) 13:26:410413デフォルトの名無しさん
2008/09/07(日) 14:10:470414デフォルトの名無しさん
2008/09/07(日) 15:07:56if( x*s-4*x-5 > 0 )
0415デフォルトの名無しさん
2008/09/07(日) 15:19:470416デフォルトの名無しさん
2008/09/07(日) 17:35:310417デフォルトの名無しさん
2008/09/07(日) 17:56:22sってなんだ?
ラプラス変換された微分方程式でも扱えるようになるのか?w
0418デフォルトの名無しさん
2008/09/07(日) 18:00:03xとタイプミスしちゃったや、てへ
0419デフォルトの名無しさん
2008/09/07(日) 19:29:21http://codepad.org/OhL2bKTG
0420デフォルトの名無しさん
2008/09/07(日) 22:09:55f(x) = x*x-4*x-5 {x|x∈R}
としたときf(x)の取りうるすべての値が0以上であるかどうか、という意味で。
Mathematicaみたいに数式処理をサポートしない限り無理かと思うが
0421デフォルトの名無しさん
2008/09/07(日) 22:20:59>数式処理
expression templateで木を作っちゃえばなんとかなるんじゃね?
C++だと全部パターンマッチでやる必要があってむちゃくちゃ苦行だが、
Dなら比較的実用的なものも可能そう。
0422デフォルトの名無しさん
2008/09/09(火) 10:23:13イテレータ関係の仕様を再検討。opApply廃止・std.range新設か?
http://lists.puremagic.com/pipermail/digitalmars-d-announce/2008-September/010146.html
http://ssli.ee.washington.edu/~aalexand/d/tmp/std_range.html
0423デフォルトの名無しさん
2008/09/09(火) 10:53:050424デフォルトの名無しさん
2008/09/09(火) 10:59:30http://lists.puremagic.com/pipermail/digitalmars-d-announce/2008-September/010159.html より:
> auto fib = generate!("a[0] + a[1]")(1, 1);
0425デフォルトの名無しさん
2008/09/09(火) 15:01:080426デフォルトの名無しさん
2008/09/09(火) 16:08:360427デフォルトの名無しさん
2008/09/09(火) 16:26:45C++寄りの人間としては嬉しい。うん、廃止も、お前らと同じ一人のマゾとして嬉しいよ!
0428デフォルトの名無しさん
2008/09/09(火) 16:34:44422のリンク先に
> There are also a few bugs in the compiler and
> some needed language enhancements (e.g. returning a reference from a
> function); Walter is committed to implement them.
とあるから、関数が参照を返せるようにはなる。
0429デフォルトの名無しさん
2008/09/09(火) 16:53:17バージョン3相当の様変わりをしたときにバージョン2は完成するんだろうな。
まだまだワクワクが止まらないぜ!
0430デフォルトの名無しさん
2008/09/09(火) 17:00:420431デフォルトの名無しさん
2008/09/09(火) 17:06:41dmd2
dmd3
dmd4
...
というようにバージョン分けで派閥が生まれたりしてな
0432デフォルトの名無しさん
2008/09/09(火) 17:14:550433デフォルトの名無しさん
2008/09/09(火) 17:54:300434デフォルトの名無しさん
2008/09/09(火) 18:44:01Dの場合、いろいろ拡張加えて滅茶苦茶にしてるのが原作者だから手に負えない
0435デフォルトの名無しさん
2008/09/09(火) 20:39:000436デフォルトの名無しさん
2008/09/09(火) 20:39:57俺はそんなでもないと思うんだが・・・
0437デフォルトの名無しさん
2008/09/09(火) 21:49:02そしてD#や並列処理に特化したParallel-Dなどが生まれるんですよね
0438デフォルトの名無しさん
2008/09/09(火) 22:17:55滅茶苦茶やってるって感じ
D自体はいい方向に進んでるんじゃない?
0439デフォルトの名無しさん
2008/09/09(火) 22:25:420440デフォルトの名無しさん
2008/09/10(水) 00:00:420441デフォルトの名無しさん
2008/09/10(水) 00:46:01最近そういう系の機能(mixin?)について感じるのだけど、
ソースコードを文字列として切り貼りするのって、確かに強力だけど何かヤだなぁ……
無理やりなハックがまかり通って、誰にも読めないコードが氾濫しそうというか、実も蓋もなさすぎる感じ。
そこにせっかくコードが書かれてるのに、IDEも色分けとかしてくれなさそうだし。
適用範囲をシンボル名あたりだけに限定しても、シンプルかつ十分なんじゃなかろーか。
template mixinじゃなくてほんとにmixinを使うべき場面って、
「クラスを使う側がプロパティの名前を決められる」とかくらいしか思いつかない。
0442デフォルトの名無しさん
2008/09/10(水) 01:31:48railsみたいなすごいのを生んでくれる可能性も・・・。
0443デフォルトの名無しさん
2008/09/10(水) 01:44:54でもD言語はシンプルにC++の欠点を排除しただけの、
ネイティブ実行可能コードを吐いてくれる言語であって欲しい。
0444デフォルトの名無しさん
2008/09/10(水) 01:55:41参照してる他のモジュールやクラスの関数やメンバの定義をiframe的インターフェイスで編集したい。
-- file1.d
int func(int x){ return x*2; }
ってあったら
-- file2.d
import file1;
void main(){
int n = 10;
printf("%d\n", func(int x: n){ return x*2; });
}
って表示できて、file2.d内でfuncの定義を書き換えるとfile1.dの中身も書き換えてくれる、って感じの。
(ファイルが実際に書き換わるんであって、file2.d内だけで定義上書きとかではなし)
0445デフォルトの名無しさん
2008/09/10(水) 03:33:58opApplyのままかどうかは分からんが、
おそらく内部イテレータが廃止されることはないだろう。
0446デフォルトの名無しさん
2008/09/10(水) 03:42:44特に繰り返しってなると小さいことでも大きく出そうだからなぁ…
実際計測とかはしたことないけど。
0447デフォルトの名無しさん
2008/09/10(水) 04:25:060448デフォルトの名無しさん
2008/09/10(水) 10:39:06ジェネレータほすぃー
0449デフォルトの名無しさん
2008/09/10(水) 13:23:590450デフォルトの名無しさん
2008/09/10(水) 13:29:50>>424の例はフィボナッチ数列……? 実装されたとしてこれってどう動くの?
0451デフォルトの名無しさん
2008/09/10(水) 14:44:20opApplyが正にジェネレータな気がするんだが
0452デフォルトの名無しさん
2008/09/10(水) 14:57:48砂糖がかかってなくて構文こそ無骨だけど、
実質はPythonのジェネレータやC#のEnumeratorと同じだよね。
0453デフォルトの名無しさん
2008/09/10(水) 17:42:13実行途中で止めてまた再開とかできないし
0454デフォルトの名無しさん
2008/09/10(水) 17:56:48int i = fib();
こうしたらフィボナッチ数列の値が呼び出す度に順に得られるのかな
無限リストとか本当の遅延評価とかそんなもん?
generate!()を作ってみようとしてめんどくさくなってやめたw
0455デフォルトの名無しさん
2008/09/10(水) 20:27:22auto i = a.length;
return new class {
T opCall() {
if(i) {
return a[$ - (i--)];
} else {
auto val = std.functional.unaryFun!(F)(a);
a = val ~ a;
return val;
}
}
};
}
0456デフォルトの名無しさん
2008/09/10(水) 22:16:20auto generate(alias F, T)(const(T)[] a...) {
auto i = a.length;
return {
if(i) {
return a[$ - (i--)];
} else {
auto val = std.functional.unaryFun!(F)(a);
a = val ~ a;
return val;
}
};
}
0457デフォルトの名無しさん
2008/09/10(水) 22:19:020458デフォルトの名無しさん
2008/09/11(木) 01:11:32auto generate(alias F,T)(const(T)[]a...){
return{
scope(exit)a = a[1..$] ~ std.functional.unaryFun!(F)(a);
return a[0];
};
}
0460デフォルトの名無しさん
2008/09/11(木) 02:18:14なんか意味変わってないか
0461デフォルトの名無しさん
2008/09/11(木) 03:29:560462デフォルトの名無しさん
2008/09/11(木) 11:53:10メソッド名をどうするかの議論が多いね。
典型的なbikeshedだと思うw
0463デフォルトの名無しさん
2008/09/11(木) 18:03:230464デフォルトの名無しさん
2008/09/11(木) 21:45:240465デフォルトの名無しさん
2008/09/11(木) 22:48:530466デフォルトの名無しさん
2008/09/12(金) 00:49:080467デフォルトの名無しさん
2008/09/12(金) 12:00:24なんだってなんだ
0468デフォルトの名無しさん
2008/09/12(金) 12:04:24なんだってなんだってなんだ
0469デフォルトの名無しさん
2008/09/12(金) 15:02:07ttp://www.alexa.com/data/details/traffic_details/digitalmars.com
China25.8%
United States19.6%
Germany13.3%
India11.3%
United Kingdom4.0%
Iran2.9%
Spain2.2%
Japan2.2%
中国で人気なのか?
日本人の場合は日本語サイト中心の悪寒
0470デフォルトの名無しさん
2008/09/12(金) 19:43:55ツールバー入れてる人も多いんじゃないかな
まあ、調べ物してると中国のサイトがヒットすることが多いから日本よりは関心強いんだろうけど
0471デフォルトの名無しさん
2008/09/12(金) 19:50:130472デフォルトの名無しさん
2008/09/12(金) 21:24:11荒れるだけなので敢えて張り合う必要はない。
0473デフォルトの名無しさん
2008/09/12(金) 22:04:36しょーもない煽りは効かないんじゃね
0474デフォルトの名無しさん
2008/09/12(金) 22:14:050475デフォルトの名無しさん
2008/09/12(金) 23:26:31最初の
r
s
r.before(s)
yellow(r, s)
s.after(r)
のバーの考え方って他にどこかで見たことある?
ていうかyellow()てなんぞw
0476デフォルトの名無しさん
2008/09/13(土) 03:40:03クロージャの文法が気持ち悪くない
0477デフォルトの名無しさん
2008/09/13(土) 04:21:37バーの考え方って何?
yellowは右の図の色だと思う(別にメソッドとかを表しているわけじゃないかと)
0478デフォルトの名無しさん
2008/09/13(土) 07:23:53yellow は、NOTE に書いてあるように、
そもそもメソッドを提供すべきか、だとするとどういう名前をつけたらいいのか
という話だよね。
r と s の領域 and だから単純に r.and(s) でいいような気がするんだけど、
そういうもんでもないのか?
それより、head-toe より、head-tail じゃねーのとか思うんだけどなぁ。
いや、まぁ、言葉がちょっと違うとかどーでもいいレベルなんだけどさ。
0479475
2008/09/13(土) 08:44:17rangeをrとsとそれらの論理演算で扱うbefore-and-after conceptという考え方って新しいのかなと
yellowが右のバーの色なのはわかるんだけどなんでyellowだけyellowなのかと
>>478
メソッド名や提供するかどうか自体を決めかねてるからか
head-tailの方がよく聞くっちゃ聞くように思うな
0480デフォルトの名無しさん
2008/09/13(土) 22:18:03functionとdelegateとopCall可能オブジェクトを一緒くたに受け取る方法とかない?
0481デフォルトの名無しさん
2008/09/13(土) 22:44:17return func(args);
}
0482デフォルトの名無しさん
2008/09/14(日) 00:55:19コンパイラがassertionfailureでしにやがる…
0483デフォルトの名無しさん
2008/09/14(日) 08:16:140484デフォルトの名無しさん
2008/09/14(日) 11:00:39boost::functionみたいな方法もあるけど、多分デリゲートのがいい
0485デフォルトの名無しさん
2008/09/14(日) 11:10:28ReturnType!(Func) call(Func, Args...)(Func func, Args args) {
return func(args);
}
これなら落ちないのにねぇ。まったくDって子は…
0486デフォルトの名無しさん
2008/09/14(日) 11:24:16だがマスコットキャラ、テメーはダメだ
0487デフォルトの名無しさん
2008/09/14(日) 11:45:440488475
2008/09/14(日) 11:48:540489デフォルトの名無しさん
2008/09/14(日) 11:55:23最初からそうだっけ
import std.stdio,std.traits;
ReturnType!(F) call(F,TL...)(F f,TL args){return f(args);}
void foo(){}
class A{void bar(){}}
class B{void opCall(){}}
int buz(){return 1;}
void main(){
call(&foo);
call(&(new A).bar);
call(new B);
writefln(call(&buz));
}
0490デフォルトの名無しさん
2008/09/14(日) 12:17:26オブジェクト作るのは避けられないと思うよ
std.variantみたいに解決できるかもしれないけどよくわからん
>>489
void a(){}
void b(){
return a();
}
こういうこと?
0491デフォルトの名無しさん
2008/09/14(日) 12:23:20そうそう
・・・もしかしてC/C++からそうだったりする?
0492デフォルトの名無しさん
2008/09/14(日) 12:34:11初期の頃はわからないけど普通にできたはずだよ
0494デフォルトの名無しさん
2008/09/14(日) 17:59:13Cでは未定義。
C++98ではvoid型の式に限りreturnに書ける。
0495デフォルトの名無しさん
2008/09/14(日) 18:36:47画像ファイルを読み込んで表示・・・
するだけでなんだかえらくしんどいのだけど
これって仕様?
0496デフォルトの名無しさん
2008/09/14(日) 18:38:43DirectX SDKのポーティングでもして鍛えてきてください。
0497デフォルトの名無しさん
2008/09/14(日) 19:02:03ラッパーライブラリが使われることが多い。
0498デフォルトの名無しさん
2008/09/14(日) 20:26:050499デフォルトの名無しさん
2008/09/14(日) 21:15:440500デフォルトの名無しさん
2008/09/15(月) 01:53:200501デフォルトの名無しさん
2008/09/15(月) 01:57:580502デフォルトの名無しさん
2008/09/15(月) 02:01:550503デフォルトの名無しさん
2008/09/15(月) 02:06:10有限会社オングス「D言語パーフェクトガイド―Windows Linux FreeBSD対応」技術評論社、2004、ISBN 978-4774122083
最近出たの(半年以上たったからもうかなり変わってるけど):
Kris Macleod Bell, Lars Ivar Igesund, Sean Kelly, Michael Parker "Learn to Tango with D," Apress, 2008, ISBN 978-1590599600
0504デフォルトの名無しさん
2008/09/15(月) 02:18:37入門者はテンプレに幾つかリンクあるから参考にすればいいと思う。C/C++orJava辺り経験があれば問題ないはず。
プログラミング自体の入門者向け文書で古くなってないのは、�Hの人のしかないのかな。
0505デフォルトの名無しさん
2008/09/15(月) 02:30:51www.kmonos.net/alang/d/d-jp080911.chm
0506デフォルトの名無しさん
2008/09/15(月) 03:08:29自分はこれで入って未だにこれ以上の知識はないが、
今のところ普通にコンパイルできてたりする・・・。
スレの話題がさっぱりわからなくて困るというのはあるけど。
0507デフォルトの名無しさん
2008/09/15(月) 06:01:29恐らく今だともっとDっぽい書き方がある気がする
0508デフォルトの名無しさん
2008/09/15(月) 08:40:04「Dっぽい書き方」とか
0509デフォルトの名無しさん
2008/09/15(月) 09:26:470510デフォルトの名無しさん
2008/09/15(月) 10:06:58boolがbitのaliasだったり、
.sizeofを.sizeって書いてり、
===がまだ使われてたような頃じゃないの?
0511デフォルトの名無しさん
2008/09/15(月) 10:46:33char[] hoge = "hoge";
これで小一時間詰まったのは良い思い出
現在だと公式の言語仕様ページを見るしかない
C言語の知識が必要だが
まあD言語に手を出す変態なんてC++とか余裕ですよね!
0512デフォルトの名無しさん
2008/09/15(月) 10:50:430513デフォルトの名無しさん
2008/09/15(月) 17:43:380514デフォルトの名無しさん
2008/09/15(月) 19:16:25http://codepad.org/BIErVNcT
0515デフォルトの名無しさん
2008/09/15(月) 19:27:25遅レスだけどoptimizerレベルの問題じゃね?
0516デフォルトの名無しさん
2008/09/15(月) 20:12:570517デフォルトの名無しさん
2008/09/15(月) 20:14:450518デフォルトの名無しさん
2008/09/15(月) 20:25:56バージョン0の間に消されたから、バージョン1でも使えない。
0519デフォルトの名無しさん
2008/09/15(月) 20:57:360520デフォルトの名無しさん
2008/09/15(月) 21:11:30これこのスレの奴が作ってたやつ?
コンパイル時にとかすごすぎだよな…
0521デフォルトの名無しさん
2008/09/15(月) 21:16:06std.stdio.writef*();
std.cstream.dout.writef*();
俺は自作した奴使ってるけど
0522デフォルトの名無しさん
2008/09/15(月) 21:21:18よめないっす。
0523デフォルトの名無しさん
2008/09/15(月) 21:24:150524デフォルトの名無しさん
2008/09/15(月) 21:25:140525デフォルトの名無しさん
2008/09/15(月) 21:40:23くそ・・・!実用性など無いのに胸がときめく!俺も変態か・・・
0526デフォルトの名無しさん
2008/09/15(月) 21:45:00Stream継承してるし
0527デフォルトの名無しさん
2008/09/15(月) 22:14:560528デフォルトの名無しさん
2008/09/15(月) 23:36:06コンパイル時にFizzBuzzとかマジで変態だな…
0529デフォルトの名無しさん
2008/09/15(月) 23:41:45const(char)*をconst(ubyte)*にキャストするときとか、ついついconst書き忘れる
0530デフォルトの名無しさん
2008/09/15(月) 23:59:160531デフォルトの名無しさん
2008/09/16(火) 00:00:500532デフォルトの名無しさん
2008/09/16(火) 00:28:160533デフォルトの名無しさん
2008/09/16(火) 00:34:32もしかして、一日24時間365日ずーっとD言語のこと研究してるのか?
0534デフォルトの名無しさん
2008/09/16(火) 00:44:59バージョンアップしたときにざっといじるくらいだよ
あとは普段からD使ってるから
0535デフォルトの名無しさん
2008/09/16(火) 00:52:02なんでただ検索しやすくするためだけにcastにしたんだろうな
>>531
//for D2
import std.conv;//to
void main(){
string s = "train";
s ~= to!(string)(999);
}
0536デフォルトの名無しさん
2008/09/16(火) 00:53:340537デフォルトの名無しさん
2008/09/16(火) 01:03:250538デフォルトの名無しさん
2008/09/16(火) 19:33:37数字連結するだけなのに気持ち悪いな・・・。なんかDってJavaほどでもないしC++程でもなくて
中途半端って感じだな。
0539デフォルトの名無しさん
2008/09/16(火) 19:36:51Boostのlexical_castって0xには入らないの?
0540デフォルトの名無しさん
2008/09/16(火) 19:45:33import std.string;
void main(){
string s = "train" ~ .toString(999);
}
0541デフォルトの名無しさん
2008/09/16(火) 20:12:56まぁ、個人の意見なんで、気にしないでください。
あれ?もしかして演算子のオーバーロードで解決できる?
0542デフォルトの名無しさん
2008/09/16(火) 20:17:32最近ではRopeって構造が着目されてるけど、
こういうのをファクトリで使い分け可能にしてくれんかな。
0543デフォルトの名無しさん
2008/09/16(火) 20:23:070544デフォルトの名無しさん
2008/09/16(火) 20:23:10"n = " + 1 + 2 とかやった時のわかり難さを解決しようってんだろうけど、
演算子増やされるくらいなら意識的に()で囲う方がマシ。
0545デフォルトの名無しさん
2008/09/16(火) 20:34:46日本語でおk
0546デフォルトの名無しさん
2008/09/16(火) 20:39:05Rubyみたいな構文きぼん
0547デフォルトの名無しさん
2008/09/16(火) 20:47:17同じ演算子にしたらリストへの要素の結合とリストの要素への加算が区別できないだろ。
0548デフォルトの名無しさん
2008/09/16(火) 21:46:30テンプレート使わないと遅くなりそう
0549デフォルトの名無しさん
2008/09/16(火) 22:12:46Dには配列に対するベクトル演算も実装されているから+で結合を表すと不自然なことになる
0550デフォルトの名無しさん
2008/09/16(火) 22:23:390551デフォルトの名無しさん
2008/09/16(火) 22:38:41foreach(ulong i, string line; din)
ってやったんだけど、stringじゃなくてchar[]じゃないとだめだった。
std.streamのonApplyのExampleだとstringで良さそうなのに。
あと、std.cstreamのこれだとlineに改行文字は含まなくて、std.stdioの
foreach (string line; lines(stdin))
ってやつだと改行文字含むんだよね。これは仕様をよく読めば間違わないんだけど。
ライブラリの更新計画はないんだろうか。Tangoで置き換えとかどうなったんだろ。
0552デフォルトの名無しさん
2008/09/16(火) 23:30:42ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF%2FWalter%A4%C0%A4%B1%A4%C9%B2%BF%A4%AB%BC%C1%CC%E4%A4%A2%A4%EB%A1%A9
(意訳:長い目で見ろ)
0553デフォルトの名無しさん
2008/09/17(水) 00:02:27だんだんすりあわせしてくよ、って感じなのか。納得した。
0554デフォルトの名無しさん
2008/09/17(水) 02:56:23ポインタで落ちまくりなのがなんかはまる
はまるって熱中するほうな
0555デフォルトの名無しさん
2008/09/18(木) 03:17:26svnで落としてきて、ビルドなり動作なりするリビジョンを探さないといけない。
もしかしてこのスレだと常識?
0556デフォルトの名無しさん
2008/09/18(木) 15:34:13return x * 2;
}
みたいに書ければいいのに。
0557デフォルトの名無しさん
2008/09/18(木) 16:04:23これで十分だし、構文糖を追加するほどのものでも無いような。
auto func(T)(T x) {
return x * 2;
}
0558デフォルトの名無しさん
2008/09/18(木) 17:12:54これって循環リストっていうより双方向リストだよな?
0559デフォルトの名無しさん
2008/09/18(木) 17:26:32V get (uint index)
ってメンバ関数あるでしょ?ランダムアクセスできるんだよ
実装は動的にサイズ拡張するリングバッファだと思うよ
0560559
2008/09/18(木) 17:53:14ランダムアクセスとか嘘ですごめんなさい
0561デフォルトの名無しさん
2008/09/18(木) 22:28:38dflはかなり使い勝手いいんだけど、結構やばそうなところいろいろあるんだよね。
D&Dの挙動が怪しくて、テストでボンボンファイル放り込んでいたら落ちて、
放り込んだファイルが全部消えたことがあって、すげーあせったw
あとスクロールバーみたいなスライドさせるコントロールがないんだよね。
それに気が付かないで途中まで作って、今後の方針で悩み中w
0562デフォルトの名無しさん
2008/09/19(金) 07:00:26D言語って来ないの?
みんなC++0xに行っちゃうの?
545 名前:デフォルトの名無しさん[sage] 投稿日:2008/09/19(金) 02:28:58
VisualStudio並のIDEが出来たら行くよ
546 名前:デフォルトの名無しさん[sage] 投稿日:2008/09/19(金) 04:04:49
GCを簡単に取り外す方法が用意できたら行くよ
0563デフォルトの名無しさん
2008/09/19(金) 07:09:280564デフォルトの名無しさん
2008/09/19(金) 12:15:390565デフォルトの名無しさん
2008/09/19(金) 13:44:230566デフォルトの名無しさん
2008/09/19(金) 15:26:450567デフォルトの名無しさん
2008/09/19(金) 22:41:050568デフォルトの名無しさん
2008/09/19(金) 23:24:36それこそ、ゆとりには便利に使えないかもね。
0569デフォルトの名無しさん
2008/09/20(土) 00:19:56実際の所、IDEを使ってるとリファクタリングがかなり楽でいいよ。
0570デフォルトの名無しさん
2008/09/20(土) 00:27:52そもそもIDEがいるいらないじゃ全然わからんので
何それの機能がいるいらないという話になるべき
0571デフォルトの名無しさん
2008/09/20(土) 02:42:01統合デバッガはあれば嬉しい
0572デフォルトの名無しさん
2008/09/20(土) 04:40:05・Emacs系の拡張にあるような地味に便利な類の豊富なテキスト編集機能
・あるファイルの編集窓を別のファイル中に埋め込み編集できる機能
・ファイルの違いを意識せずに任意のモジュールやクラスや関数を連結編集できる機能
・日本語文字エンコード対応
・HTMLのいわゆるWYSIWYGエディタさながらのDDoc変換閲覧サーバ機能
・テキストのアンチエイリアス表示
0573デフォルトの名無しさん
2008/09/20(土) 07:25:39・あるファイルの編集窓を別のファイル中に埋め込み編集できる機能
がイメージできないんだけど、どんな感じ?普通に分割ビューじゃなくて?
0574デフォルトの名無しさん
2008/09/20(土) 08:48:26HTMLのiframeみたいな見た目で、かつ同一ビューのテキストとしてシームレスに編集できるような感じ。
インライン関数やインラインの無名クラスなんかをあとから別モジュールに切り出すときに、
こっちが構文の修正なんかしなくとも、IDEがその部分をiframeっぽい見た目に自動変換して
「インラインっぽいのに別モジュール!ふしぎ!」ってなことをうまい具合にやってくれると、
場当たりプログラミング的には楽になるんじゃないかなあと思って。
(その機能を当てにして、とりあえずインライン単一ファイルで書いておける、とか)
0575デフォルトの名無しさん
2008/09/20(土) 10:16:480576デフォルトの名無しさん
2008/09/20(土) 12:05:430577デフォルトの名無しさん
2008/09/20(土) 12:21:310578デフォルトの名無しさん
2008/09/20(土) 17:55:59コードを範囲選択してキーボードポンでダイアログ表示、
メソッド名打ち込んで引数名確認したらEnterでメソッドが完成。
自動的に決まった引数から”どのメンバであるべきか”とかが何となく分かるから、今度はメソッドの移動。
メソッド名とかも後で簡単に変更できるって分かってるから、
使われ方を必死に予測して適切な名前をひねり出す必要がない。
頭がすげー楽。
D言語はあくまで静的に解決することにこだわってるから、
そういうIDEの機能とも相性が良さそうなのよねぇ。
その分規模がでかくなるから、なかなかまとまった実装をする気にならないけど。
0579デフォルトの名無しさん
2008/09/20(土) 18:05:020580デフォルトの名無しさん
2008/09/21(日) 01:11:06import std.date;
void main(){
.toString(getUTCtime());
}
Assertion failure: '0' on line 5222 in file 'expression.c'
abnormal program termination
これってなんですか
0581デフォルトの名無しさん
2008/09/21(日) 01:55:050582デフォルトの名無しさん
2008/09/21(日) 13:22:350583デフォルトの名無しさん
2008/09/21(日) 15:57:570584デフォルトの名無しさん
2008/09/21(日) 21:35:140585デフォルトの名無しさん
2008/09/22(月) 09:49:08>eclipseレベルのリファクタリングブラウザは、一度使うともう到底後戻りできんわ。
Javaではそれができるの?Dはないよね?
0586デフォルトの名無しさん
2008/09/23(火) 02:37:09import std.stdio;
interface A{}
class B: A{}
void main(){
A a = new B;
writefln(a.classinfo.name);
}
このような場合の、 writefln のところで B と出るようなやり方はないのでしょうか?
0587デフォルトの名無しさん
2008/09/23(火) 14:31:59本来ならBとでます。
0588デフォルトの名無しさん
2008/09/23(火) 14:34:28writefln((cast(Object)a).classinfo.name);
0589デフォルトの名無しさん
2008/09/23(火) 15:33:50構造体がインターフェイスを実装できるようにする計画もあるみたいだから、現在の実装で正しいんだと思う。
クラスはclassinfoを持ってるけど構造体にはないから、インターフェイス自身のclassinfoを返すしかない。
もとがクラスオブジェクトだと断言できるなら>>588のようにキャストすればいい。
0590デフォルトの名無しさん
2008/09/23(火) 20:02:40(中略)
.classinfo for this interface (not for containing class)
0591デフォルトの名無しさん
2008/09/23(火) 20:16:33それはInterface構造体の説明だろ
0592586
2008/09/23(火) 21:55:53なるほど、Objectにキャストすればいいのか。
ありがとうございます。
>>587
俺もバグかと思った。
>>589
たしかにカンファレンスのネタであった気がするな。
構造体でinterface実装って、POD型維持したままで出来るものなの?
0593デフォルトの名無しさん
2008/09/24(水) 02:22:32多重継承をinterfaceにやらせる話は値側の多重継承を捨てるという話なんで、
構造体自身が継承できない仕組みなのである程度なんとかなるのでは。
C++と同じくrefと書きまくらないとならんとか面倒もあるかもしれないが。
0594デフォルトの名無しさん
2008/09/24(水) 02:44:41何でもpure関数はスレッド安全だとか関数呼び出しを減らせるとか非同期に実行できるとか。
0595デフォルトの名無しさん
2008/09/24(水) 03:13:500596デフォルトの名無しさん
2008/09/24(水) 08:16:46Poseidonを使って何とかビルド、実行までできたのですが、
デバッガを起動しようとすると
Debug Error! Try compiling and linking with -g
とエラーが出てしまいます。
プロジェクトのプロパティのコンパイラオプション、ビルドツールオプションの
追加オプション両方に-gを加えてみたのですが、全く変わりません。
どうすればよいのかどなたか教えて下さい。
0597デフォルトの名無しさん
2008/09/24(水) 11:14:400598596
2008/09/24(水) 11:54:00ビルドツール設定 = リンカ設定と思っていたのですが、違うのでしょうか?
0599デフォルトの名無しさん
2008/09/24(水) 13:28:250600デフォルトの名無しさん
2008/09/24(水) 13:45:21refってC++/CLIのことか?ややこしいから省略するなよ全然別物だろ
0601デフォルトの名無しさん
2008/09/25(木) 03:36:510602デフォルトの名無しさん
2008/09/25(木) 03:50:39違うのですか?
0603デフォルトの名無しさん
2008/09/25(木) 05:50:510604596
2008/09/25(木) 09:43:08御回答どうもありがとうございます。試してみたのですが、やはり同じ結果になってしまいました。出力は
C:\dmd\dmd\bin\dmd.exe File1.d File2.d -ofProject1 -debug -g -L-g
のようになっていますが、指定方法が間違っているのでしょうか?
0605604
2008/09/25(木) 09:52:20お騒がせして申し訳ありませんでした。
0606デフォルトの名無しさん
2008/09/25(木) 10:23:10ちがう。
前者のconstはストレージクラスで、後者はタイプコンストラクタ。
変数にconstストレージクラスをつけた場合は、次に来る型全体をconst()で囲んだのと同じになる。
つまり、 const char[] a; は const(char[]) a; に等しい。
const(char[]) = const(const(char)[]) ≠ const(char)[]
0607デフォルトの名無しさん
2008/09/26(金) 02:06:590608デフォルトの名無しさん
2008/09/26(金) 02:22:48のサンプル「DLL内のDのコードを呼ぶDのコード」で
test.d の DYNAMIC_LOAD 版の main() 内で、
c = (*getMyClass)();
より前に
new Object;
と書くと、全部終わった後にAccess Violationがでてしまうのですが、
これは回避できるのでしょうか?
ちなみに、FreeLibrary(h)を実行する前に new したやつを delete したり、
std.gc.fullCollect()を実行してその後使わなければ
一応いけてるみたいですが、、
0609デフォルトの名無しさん
2008/09/26(金) 02:23:08まあ、素直に構造体に入れとけばいんじゃない。
0610608
2008/09/26(金) 02:51:30ありがとうございました。
0611デフォルトの名無しさん
2008/09/26(金) 03:06:100613デフォルトの名無しさん
2008/09/26(金) 07:11:50色々あって gdc でやっと D ver2 使えるようになったんだけど
そういえば GUI 使いたいと思ったら
DWT が Tango+D ver1 だと気がついた。
Tango ぶち込んだら使えるんかいな?
0614デフォルトの名無しさん
2008/09/26(金) 09:26:37なんなんだよお前らw
0615デフォルトの名無しさん
2008/09/26(金) 09:57:01ありがとうございます。やっぱりないですか。折角インラインアセンブラで
SSEが使えたりするのに勿体ないですねぇ。
0616デフォルトの名無しさん
2008/09/26(金) 13:27:25newすれば16バイト境界にならぶけど。
0617デフォルトの名無しさん
2008/09/26(金) 18:24:54構造体でアライメント属性使っても意味ないんかな?
試してみないとよくわからんな。
実装依存になってるし。
ttp://www.kmonos.net/alang/d/2.0/attribute.html#align
0618デフォルトの名無しさん
2008/09/26(金) 18:25:57構造体でアライメント属性使っても意味ないんかな?
試してみないとよくわからんな。
実装依存になってるし。
ttp://www.kmonos.net/alang/d/2.0/attribute.html#align
0619デフォルトの名無しさん
2008/09/26(金) 18:29:40構造体自体がずれてたらどうにもならない。
0620デフォルトの名無しさん
2008/09/26(金) 18:48:35使わないから?
0621617
2008/09/26(金) 18:55:390622デフォルトの名無しさん
2008/09/26(金) 20:24:32そうでしょうね。
無くても困らないし。
0623デフォルトの名無しさん
2008/09/26(金) 21:03:000624デフォルトの名無しさん
2008/09/26(金) 21:19:43まあ、使わんけどw
0625デフォルトの名無しさん
2008/09/27(土) 02:26:20フィールドにアクセスする関数を作るのが面倒でならない。
ビットフィールドはぜひとも欲しいと感じているんだが、
なくても困らない人たちはどういうコードを書くのか、
参考までに教えていただきたいのですが・・・。
0626デフォルトの名無しさん
2008/09/27(土) 02:31:57>>624
0627デフォルトの名無しさん
2008/09/27(土) 02:38:570628デフォルトの名無しさん
2008/09/28(日) 03:06:210629デフォルトの名無しさん
2008/09/28(日) 16:25:460630デフォルトの名無しさん
2008/09/28(日) 16:43:100631デフォルトの名無しさん
2008/09/28(日) 18:16:510632デフォルトの名無しさん
2008/09/28(日) 18:18:21VFSだった
0633デフォルトの名無しさん
2008/09/28(日) 23:44:170634デフォルトの名無しさん
2008/09/29(月) 00:00:590635デフォルトの名無しさん
2008/09/29(月) 01:04:020636628
2008/09/29(月) 01:55:52http://cdl.skr.jp/bin/sslsocketstream.zip
0637デフォルトの名無しさん
2008/09/29(月) 06:00:21いまだにテキストエディタでしこしこ書いてる俺。
0638デフォルトの名無しさん
2008/09/29(月) 07:40:58まあ、俺もエディタですが。しかもビルドツールはmake
0639デフォルトの名無しさん
2008/09/29(月) 08:15:59うp乙
>>635
DescentはすばらしいのになんかEclipseが使いにくいんだが・・・
>>638
ビルドツールはDSSSがいまいちまともに機能しないのでbudを使ってる
0640388
2008/09/29(月) 09:07:55やっとこかなり小さい再現コードが書けた
---- 以下のモジュールで静的ライブラリを作成
module test;
import std.random;
Mt19937 gen;
uint nonThreadSafeRandom() {return gen.next;}
---- 以下のモジュールを前述のライブラリとリンクして実行ファイルにしようとするとOPTLINKか落ちる
import test;
void main() { uint a = nonThreadSafeRandom(); }
---- 以下のようにすると通る
import test, std.random;
void main() { uint a = nonThreadSafeRandom(); }
0642デフォルトの名無しさん
2008/09/29(月) 17:56:29Issue 2378に。
また追ってご報告。
0644デフォルトの名無しさん
2008/09/30(火) 21:44:52ttp://delight.sourceforge.net/
試してみた人いる?
0645デフォルトの名無しさん
2008/10/01(水) 00:09:04変数を全部Variantにしてコンパイラブルpythonを作ったぜ!とかいうなら向こうの人が喜びそうだが。
0646デフォルトの名無しさん
2008/10/01(水) 10:03:22ものすごく気になるんだが、Linux限定か?
0647デフォルトの名無しさん
2008/10/01(水) 15:15:52ここからソースが落とせる
基本的にはDelightソースを読んで行末とインデントを数えて;と{}を打って
ソースレベルの翻訳が終わったらdコンパイラに渡すという仕様でいいと思われるので、
dmd用のパッチを書くのもできるのではないかな。単に人力が必要なだけで。
0648デフォルトの名無しさん
2008/10/02(木) 02:59:410649デフォルトの名無しさん
2008/10/02(木) 15:35:59interfaceは純粋仮想クラスでいいとしても
0650デフォルトの名無しさん
2008/10/02(木) 15:42:22名前ハイジャックのルールを適用して
int function(int) f;
int delegate(int, int) f;
void f(int,int,int){}
int f(int) = &someFunc
みたいな
0651デフォルトの名無しさん
2008/10/02(木) 20:16:040652デフォルトの名無しさん
2008/10/02(木) 21:35:39string v;
string v = "hoge";
0653デフォルトの名無しさん
2008/10/02(木) 22:13:49final char[] toString (char[] dst = null)
はオーバーロードされてないことにいい加減気づいてほしい。
…狙ってやってる…わけないよなぁ?
0654653
2008/10/02(木) 22:14:320655デフォルトの名無しさん
2008/10/03(金) 01:02:250656デフォルトの名無しさん
2008/10/05(日) 12:02:51次は何がくるのか
0657デフォルトの名無しさん
2008/10/05(日) 12:41:490658デフォルトの名無しさん
2008/10/05(日) 19:44:48ところで、Tangoにメルセンヌツイスターが追加された模様。
しかし…random系のはclassにするべきじゃないかと思うんだがどうか。
0659デフォルトの名無しさん
2008/10/05(日) 21:39:29明確な理由があれば従いやすくなるし
0660デフォルトの名無しさん
2008/10/06(月) 01:11:08乱数は速度が必要なことがあるから、仮想関数の呼び出しコストのことを考えてるんじゃないか、みたいな話だったかな。
個人的にはクラスにして欲しい。
大体、そこまで速度的にタイトな場面でメルセンヌ・ツイスタやら線形合同法使わないだろと。
特殊なシーンだと思うし、標準がどうであろうとたぶん自分で実装すると思うんだよなあ……。
0661デフォルトの名無しさん
2008/10/06(月) 01:19:48超大量の乱数(数億とか)が要求される状況とかじゃね?
そうすると、デフォで手軽に高速な方がいいかもしんない。
0662デフォルトの名無しさん
2008/10/06(月) 02:58:39{
int i;
void func(){++i;}
}
class C
{
int i;
final void func(){++i;}
}
この二つでベンチマーク取ってみたけど、ほぼ同等の速度で実行されたよ。
中身が乱数生成するような多少複雑なものになれば、差は無視できるんじゃないかな?
本当にstructでやる意味ってあるのかな?
0663デフォルトの名無しさん
2008/10/06(月) 04:17:38Random使ってて速度が欲しいはねーって
0664デフォルトの名無しさん
2008/10/06(月) 06:38:300665デフォルトの名無しさん
2008/10/06(月) 08:10:23単なるデータ構造が欲しいならクラスに統一してほしい。
0666デフォルトの名無しさん
2008/10/06(月) 12:06:400667デフォルトの名無しさん
2008/10/06(月) 13:08:550668デフォルトの名無しさん
2008/10/06(月) 15:05:000669デフォルトの名無しさん
2008/10/06(月) 18:29:290670デフォルトの名無しさん
2008/10/06(月) 20:00:480671デフォルトの名無しさん
2008/10/06(月) 20:09:07C:\test.d: module Documents cannot read file 'C:\test.d'
なんぞこれ
0672デフォルトの名無しさん
2008/10/06(月) 20:10:27SVN最新版が対応してるとの話なんでマニュアル通り試してみたんだけど(於:Ubuntu 8.04)
% tar jxf gcc-4.1.2.tar.bz2
% cd gcc-4.1.2/gcc
% svn co http://svn.sourceforge.net/svnroot/dgcc/trunk/d
% cd ../
% ./gcc/d/setup-gcc.sh --d-language-version=2
% ./configure --enable-languages=d
% make
で
(略)
checking If /home/(アカウント名)/gcc-4.1.2/host-i686-pc-linux-gnu/gcc/gdc
-B/home/(アカウント名)/gcc-4.1.2/host-i686-pc-linux-gnu/gcc/ -B/usr/local/i686-pc-linux-gnu/bin/
-B/usr/local/i686-pc-linux-gnu/lib/ -isystem /usr/local/i686-pc-linux-gnu/include -isystem
/usr/local/i686-pc-linux-gnu/sys-include can compile D sources...
/home/(アカウント名)/gcc-4.1.2/host-i686-pc-linux-gnu/gcc/cc1d:
/home/(アカウント名)/gcc-4.1.2/host-i686-pc-linux-gnu/gcc/libgcc_s.so.1:
version `GCC_4.2.0' not found (required by /usr/lib/libstdc++.so.6)
no
configure: error: can't compile D sources!
make[1]: *** [configure-target-libphobos] エラー 1
make[1]: ディレクトリ `/home/(アカウント名)/gcc-4.1.2' から出ます
make: *** [all] エラー 2
となってエラーになる
gcc-4.1.2/host-i686-pc-linux-gnu/gcc/gdc は一応生成されてるみたいなんだがよくわからない
何か手順間違ってるかな
0673デフォルトの名無しさん
2008/10/06(月) 20:11:25URIにスペース入ると駄目なのね。
0674デフォルトの名無しさん
2008/10/06(月) 21:02:44msys上で1も2もいけることは確認した。
Linuxはわからん。
エラーから察するに、C++が入っていないのかな?
./configure --enable-languages=c,d,c++
とかで通ったりしない?
0675デフォルトの名無しさん
2008/10/06(月) 22:23:14>./configure --enable-languages=c,d,c++
これでやってみたけど、結果は同じでした。
gcc4.2.0を要求されるのがよくわからない…
0676デフォルトの名無しさん
2008/10/06(月) 22:33:39http://ubuntuforums.org/showthread.php?t=270605
パッケージのバグのような
0677デフォルトの名無しさん
2008/10/07(火) 08:10:16@@ -3524,7 +3524,6 @@
GDC=$CC
GDC=`echo $CC | sed s/xgcc/gdc/`
+GDC="env LD_LIBRARY_PATH=`pwd`/../libstdc++-v3/src/.libs/ $GDC"
echo "$as_me:$LINENO: checking If $GDC can compile D sources" >&5
echo $ECHO_N "checking If $GDC can compile D sources... $ECHO_C" >&6
0678デフォルトの名無しさん
2008/10/07(火) 08:11:140679デフォルトの名無しさん
2008/10/07(火) 18:55:46ちょっと修正必要だけどなんとかコンパイルに成功。
まだconstとかinvariantとかがカオスだけど、
これでやっとTangoでD2.0の恩恵が受けられる!
0680デフォルトの名無しさん
2008/10/07(火) 19:40:27おおーまじか
それはめでたい
しかしDFLがいまだ2.019で使えなくて俺涙目
0681デフォルトの名無しさん
2008/10/08(水) 00:21:390682デフォルトの名無しさん
2008/10/08(水) 21:47:20回答ありがとうございます、遅くなってすいません
ですが、
./configure --enable-languages=c,c++,d
の直前にgcc-4.1.2/gcc/d/phobos/configureを677のとおりに書き換えてもやはり同じエラーになってしまいます。
0683デフォルトの名無しさん
2008/10/09(木) 23:11:17std.intrinsicは貧弱すぎだろ・・・・
0684デフォルトの名無しさん
2008/10/10(金) 05:56:42「ベクトル命令を活用することが期待されます」っつー感じなんでどうかなあ。
実際実装されてないようだし。
0685デフォルトの名無しさん
2008/10/10(金) 06:39:25asmでいいじゃない
0686デフォルトの名無しさん
2008/10/10(金) 13:20:07asmはvec4クラスとか超軽量のものに使うにはオーバーヘッドがでかいので
intrinsicの代わりにはならないなぁ
同じ場面で__forceinlineも欲しかったりするけど・・・
0687デフォルトの名無しさん
2008/10/10(金) 16:03:480688687
2008/10/10(金) 16:05:10Jason House wrote:
> Did anyone make a tally ofhow many votes different things got? If so,
> what are they? I was surprised to see my remove SFINAE proposal
> showing up at all. It didn't even make my top 5
>
> For Walter's inner circle, what conclusions were drawn from the poll?
> I saw comments like "consider it done" about the whole Tango/Phobos
> runtime thing. Are there any other items getting serious
> consideration?
At the moment, the highest priority items are:
1. tango/phobos integration
2. fixing foreach so it works with iterators
3. implementing the threading model
4. fixing bugs
5. function returns by reference
6. invariant => immutable
0689デフォルトの名無しさん
2008/10/10(金) 17:29:22っttp://www.dsource.org/projects/descent/wiki/Mmrnmhrm
0690デフォルトの名無しさん
2008/10/10(金) 20:40:22それはワクワクするね。
0691デフォルトの名無しさん
2008/10/10(金) 23:31:48ま た 代 替 わ り か
eclipseDとかDDTとかdescentとかMmRnmHrmとか、eclipseプラグインの系譜はなかなか壮大だな……
0692デフォルトの名無しさん
2008/10/11(土) 18:10:070693デフォルトの名無しさん
2008/10/11(土) 18:44:26とかもね。
0694デフォルトの名無しさん
2008/10/11(土) 18:48:360695デフォルトの名無しさん
2008/10/11(土) 21:18:05構造体OggVorbis_Fileにdoubleとかfloatが含まれてて、
それをimportして変数を宣言すると、OggVorbis_File__initZが無いっすってリンカに怒られる
浮動小数点をNaNに初期化したいんだろうけど、こういうところでかなり困る
0696デフォルトの名無しさん
2008/10/11(土) 21:39:200697デフォルトの名無しさん
2008/10/11(土) 21:41:520698デフォルトの名無しさん
2008/10/11(土) 21:43:480699デフォルトの名無しさん
2008/10/12(日) 18:22:280700デフォルトの名無しさん
2008/10/12(日) 18:50:540701デフォルトの名無しさん
2008/10/12(日) 19:07:42おまえら良くついていこうって気になれるな。
0702デフォルトの名無しさん
2008/10/12(日) 19:22:490703デフォルトの名無しさん
2008/10/12(日) 20:17:33lisp/scheme の信者っぷりはよく知っています。emacs とか‥‥‥。
0704デフォルトの名無しさん
2008/10/12(日) 20:20:510705デフォルトの名無しさん
2008/10/12(日) 20:36:42俺はDだと思うけどマシってだけだ
0706デフォルトの名無しさん
2008/10/12(日) 20:42:55まず「実用的」の定義を教えてくれ
0707デフォルトの名無しさん
2008/10/12(日) 20:52:21もっと話を具体的なところに落とせよ
誰が使うのか、何に使うのか、どういう環境で使うのか
0708デフォルトの名無しさん
2008/10/12(日) 21:15:15あらゆるいみで emacs 程度で。
0709デフォルトの名無しさん
2008/10/12(日) 21:16:180710デフォルトの名無しさん
2008/10/12(日) 21:31:49それはemacsをしらないということですかね、もぐりですか?
0711デフォルトの名無しさん
2008/10/12(日) 21:36:100712デフォルトの名無しさん
2008/10/12(日) 21:41:26本当にそう考えるのならレスつける必要もないのでは?
0713デフォルトの名無しさん
2008/10/12(日) 21:44:04自分のレスが思った以上に馬鹿だったらしいと気付いて
必死に「最初から煽ラーだった」ように見えるログ作りに精を出してるんだろ。
俺は馬鹿だったんじゃない、釣ったんだ、ってね。
0714デフォルトの名無しさん
2008/10/12(日) 21:44:210715デフォルトの名無しさん
2008/10/12(日) 21:45:090716デフォルトの名無しさん
2008/10/12(日) 21:45:38そうそう、メール欄に注目。
0717デフォルトの名無しさん
2008/10/12(日) 23:02:57その発言も意味分からないぞ
0718デフォルトの名無しさん
2008/10/12(日) 23:19:190719デフォルトの名無しさん
2008/10/12(日) 23:22:400720デフォルトの名無しさん
2008/10/12(日) 23:33:27他でやれ、な?
0721デフォルトの名無しさん
2008/10/13(月) 00:23:17早く患者のDコンパイラを新しいものと取り替えるんだ!
0722デフォルトの名無しさん
2008/10/13(月) 03:33:58申し訳ないです。そのご返事のhumorに自ら降伏し、haskell 習得を中断してしばらくdやります。
0723デフォルトの名無しさん
2008/10/13(月) 03:38:080724デフォルトの名無しさん
2008/10/13(月) 03:55:240725デフォルトの名無しさん
2008/10/14(火) 13:48:50早いとこ決まらんとPhobosでもTangoでも積極的に
使いづらいんだ。
0726デフォルトの名無しさん
2008/10/14(火) 14:02:06ちゅーかtangoがただのライブラリだったらそれでいいんだよ・・・
0727デフォルトの名無しさん
2008/10/14(火) 19:49:19ここに各言語との比較表載ってたと思うんだけど、消しちゃったのか?
0728デフォルトの名無しさん
2008/10/14(火) 20:22:080729デフォルトの名無しさん
2008/10/14(火) 20:50:10http://f17.aaa.livedoor.jp/~labamba/?cmd=read&page=%C2%BE%B8%C0%B8%EC%A4%C8%A4%CE%C8%E6%B3%D32
0730デフォルトの名無しさん
2008/10/16(木) 05:23:34static typeof(this) opCall(Args...)(Args args) {
return new typeof(this)(args);
}
}
interface I {
I f();
}
template X(T) {
mixin OpCallConstructor;
T f() { writefln("X"); return this; }
}
class C {
mixin X!(C);
void g() { writefln("C"); }
}
int main(char[][] args) {
auto c = C();
c.f.g; // => "X C"
return 0;
}
関数の実体が増えるのだけが気になるが。
0731デフォルトの名無しさん
2008/10/16(木) 05:27:38Dではクラスはどうせ参照型なのだから、
thisを返すパターンは派生先で勝手に派生クラスにしてほしいといえば欲しいが……
inabaさんのブログに以前貼ってあったような?
ところで、テンプレートまわりはいろいろ変な機能が付いてますが、みなさんはどうお使いですか?
0732デフォルトの名無しさん
2008/10/16(木) 21:01:26class D1: B { }
class D2: B { }
D1[] a_d1 = new D1[1];
B[] a_b = a_d1;
a_b[0] = new D2;
writeln(a_d1[0]); //D2
こういうキモいことになるのは、仕方ないの?
0733デフォルトの名無しさん
2008/10/16(木) 22:05:27C++ではどうなってるんだっけ?
0734デフォルトの名無しさん
2008/10/16(木) 22:23:18できないんだけどうちだけですか
0735デフォルトの名無しさん
2008/10/16(木) 23:12:12それは言語仕様上の欠陥といわれても仕方がないなあ。
class B { }
class D1: B { void e(){ } }
class D2: B { }
D1[] a_d1 = new D1[1];
B[] a_b = a_d1;
a_b[0] = new D2;
a_d1[0].e; // Access Violation
>>733
クラスが値型だから
a_b[0] = new D2; ← ここでコンパイルエラー
0736デフォルトの名無しさん
2008/10/17(金) 01:16:01Dの配列はlightweightなのが大切なのかも知れんが、あまりに危険すぎるな。
デバッグビルドだけでも、型チェックコードを生成できるようにならないか。
0737デフォルトの名無しさん
2008/10/17(金) 01:19:17そうか、そうだった。
C++だと、D*→B*は暗黙に変換できるが、D**→B**は変換できないよな。
0738デフォルトの名無しさん
2008/10/17(金) 22:41:54いったい何が起ころうとしている…?
0739デフォルトの名無しさん
2008/10/17(金) 22:49:34>>688をやってるんじゃない?
0740デフォルトの名無しさん
2008/10/17(金) 23:21:450741デフォルトの名無しさん
2008/10/18(土) 13:24:18やっとかあ
0742デフォルトの名無しさん
2008/10/18(土) 21:13:110743デフォルトの名無しさん
2008/10/18(土) 23:21:330744デフォルトの名無しさん
2008/10/18(土) 23:31:47誰かどんなときに使いたいのか教えてちょうだい
0745デフォルトの名無しさん
2008/10/19(日) 00:02:030746デフォルトの名無しさん
2008/10/19(日) 00:09:150747デフォルトの名無しさん
2008/10/19(日) 02:22:570748デフォルトの名無しさん
2008/10/19(日) 04:13:38なんて感じで関数の戻り値を左辺におけるようになるのかもしれない
0749デフォルトの名無しさん
2008/10/19(日) 08:28:49それはややこしい
0750デフォルトの名無しさん
2008/10/19(日) 08:54:06Dならできるはず
0751デフォルトの名無しさん
2008/10/19(日) 09:26:41Dならできるはず
0752デフォルトの名無しさん
2008/10/20(月) 01:12:15あとコンテナを標準ライブラリ化してくれ
0753デフォルトの名無しさん
2008/10/20(月) 17:56:44確かに最近TangoのD2.0の更新が頻繁だな。
つい40分ほど前にも更新が…
相変わらずちょっと直さないとコンパイルできないけど
0754デフォルトの名無しさん
2008/10/20(月) 21:04:360755デフォルトの名無しさん
2008/10/21(火) 13:26:55昨日の日中ずっと繋がらなかった
何かの前兆だと思ってた
そして、今日になって
http://www.digitalmars.com/d/2.0/changelog.html#new2_020
新バージョン来た
0756デフォルトの名無しさん
2008/10/21(火) 13:37:58> druntime.lib and phobos.lib. This will enable better integration with Tango.
> The user source code changes are:
んと、もともと
Phobos(druntime)とTango(druntime)みたいな状態だったものが
druntime.libとして抜き出したことで
PhobosとTangoが同列というか、一緒に使えるようにしたってこと?
0757デフォルトの名無しさん
2008/10/21(火) 13:43:210758デフォルトの名無しさん
2008/10/21(火) 14:00:35D1.0のほうはTango+Tangobos使って頑張れってことだろうか
0759デフォルトの名無しさん
2008/10/21(火) 14:46:21言語仕様に近い部分がdruntime.libに分離されたのかな。
お、linuxでobject.dが読めないって言われた。dmd.confが間違ってるっぽ?
-I%@P%/../src/runtime/importの部分を
-I%@P%/../src/druntime/importに修正したらコンパイル通った。
0760デフォルトの名無しさん
2008/10/21(火) 15:03:17dmd\samples\dの中身も更新してほしいよ
サンプル動かないよ
dmd\src\druntime\src\build-dmd.bat
を実行して作られた
dmd\src\druntime\libってどしたらいいの?
dmd\libへ移動?
sc.iniを書き換え?
0761デフォルトの名無しさん
2008/10/21(火) 15:15:27druntimeをPhobosとTangoで共有できるからTangoは自分で持ってきてねということ?
Tango入れたことないのだけど試してみるか
0762デフォルトの名無しさん
2008/10/21(火) 16:11:17core.exceptionにSyncExceptionが無いあたりで詰んだ。
0763デフォルトの名無しさん
2008/10/21(火) 16:12:550764デフォルトの名無しさん
2008/10/21(火) 16:13:23ん?
2.020用に、Tangoは更新されてないでしょ?
0765デフォルトの名無しさん
2008/10/21(火) 16:14:10アンカーミス、>>762
0766デフォルトの名無しさん
2008/10/21(火) 16:20:06ええ、ですので、2.020でPhobosとcore部分を共通にして動作するように
書き換えているのですが…
object.di に Cutf8 がないからと const(char)[] にすべて置換して
同様にCutf16, Cutf32, Mutf8, Mutf16, Mutf32を置換して
tango.core.Exception等の代わりにcore.exception等を使うようにして
..\tango\core\sync\Barrier.d(12): import SyncException not found
このエラーで詰んだ。
0767デフォルトの名無しさん
2008/10/21(火) 16:23:52import std.stdio;
void main(){
writeln(typeid(long));
}
これが動かない。
0768デフォルトの名無しさん
2008/10/21(火) 16:27:25当たりが多すぎるので
さすがに今回は、更新されるまで待ったほうが
0769デフォルトの名無しさん
2008/10/21(火) 16:27:43いまのところinvariantストレージクラス/タイプコンストラクタのエイリアスみたい。
0770デフォルトの名無しさん
2008/10/21(火) 16:36:342.019から持ってきたらとりあえず動いたけど。
0771デフォルトの名無しさん
2008/10/21(火) 16:40:53これで、PhobosとTangoの確執が終わり
ライブラリがいろいろ使えるようになってくるわけですね?
0772デフォルトの名無しさん
2008/10/21(火) 16:41:13ref T head(T)(ref T[] a) {
return a[0];
}
void main(){
int[] a = [1,2,3];
a.head = 4;
writeln(a); // [4 2 3]
}
0773デフォルトの名無しさん
2008/10/21(火) 16:55:45object.diがあるからそっちとlib使うんじゃねえの?
0774デフォルトの名無しさん
2008/10/21(火) 16:58:54> type a.d && dmd a && a
import std.stdio;
void main(){
writeln(typeid(long));
}
long
0775デフォルトの名無しさん
2008/10/21(火) 17:08:15んー動かんな
もしかして、druntimeのビルドしないとあかんのか。
0776デフォルトの名無しさん
2008/10/21(火) 17:11:30object.diも見つからなかった。
druntime.libってのも見つからなかったから、なにか勘違いしてるのかもしれん。
dmdのバージョンがちゃんと2.020になってるのは(実行して)確認した。
0777デフォルトの名無しさん
2008/10/21(火) 17:13:590778デフォルトの名無しさん
2008/10/21(火) 17:14:26そのうちopIndexAssignはなくなるんかね?
import std.stdio;
class Hige
{
int a;
ref int opIndex(size_t idx){return a;}
}
void main(){
auto hige = new Hige;
hige[0] = 1;//Error
}
0779デフォルトの名無しさん
2008/10/21(火) 17:14:41>>760
0780デフォルトの名無しさん
2008/10/21(火) 17:22:430781デフォルトの名無しさん
2008/10/21(火) 17:29:10druntimeフォルダだけコピーされなかったという、自分の謎のミスでした。お騒がせしました。
コピーしなおしたら、>767のコードはとくになにもしなくとも動いたよ!
0782デフォルトの名無しさん
2008/10/21(火) 17:42:50それ以降のコピーが実行されないケースがあるから
各自自分の環境に注意のこと
0783デフォルトの名無しさん
2008/10/21(火) 17:46:430784デフォルトの名無しさん
2008/10/21(火) 17:47:59前のを残したままじゃちゃんと動かない
0785デフォルトの名無しさん
2008/10/21(火) 18:03:23中身テキストエディタでdruntime.libとphobos.libを開いてみたら、
どうやらphobos.libにdruntime.libの中身も含まれているみたいな感じだった。
0786デフォルトの名無しさん
2008/10/21(火) 20:41:160787デフォルトの名無しさん
2008/10/21(火) 20:45:09druntimeに入りそうな機能を何も使ってなかっただけだが
0788デフォルトの名無しさん
2008/10/21(火) 22:01:11他のライブラリも更新されたら
俺、使い始めるんだ
0789デフォルトの名無しさん
2008/10/21(火) 22:06:120790デフォルトの名無しさん
2008/10/21(火) 22:19:30フラグktkr
0791デフォルトの名無しさん
2008/10/22(水) 00:38:56ライブラリが更新されない、gdc0.25が出ない、ってフラグですね
0792デフォルトの名無しさん
2008/10/22(水) 21:07:290793デフォルトの名無しさん
2008/10/23(木) 00:17:17こんな構文が許されるようになってる…
void f(T)(){
writeln(typeid(T));
}
void main(){
f!Object;
}
0794デフォルトの名無しさん
2008/10/23(木) 00:22:55に対して、
new C!int
とかもできるようだ。
0795デフォルトの名無しさん
2008/10/23(木) 00:40:290796デフォルトの名無しさん
2008/10/23(木) 01:19:44よくそんなのを発見できるな
不要と言えば不要なんだからありかな
0797デフォルトの名無しさん
2008/10/23(木) 02:45:23知らんけど
0798デフォルトの名無しさん
2008/10/23(木) 08:38:10Dらしいプログラミングスタイルってどんなんだろうか、と思いを馳せてしまうんだが、
俺には言語能力が微塵も無いので勉強したいんだが、
Dスタイルなプログラミングが勉強できるサイトとかってある?
0799デフォルトの名無しさん
2008/10/23(木) 12:06:42日本にはゲームプログラマがソース公開してる人が多いからそれ読めば
0800デフォルトの名無しさん
2008/10/23(木) 17:29:06これが使えなくなったなw
0801デフォルトの名無しさん
2008/10/23(木) 17:34:360802デフォルトの名無しさん
2008/10/23(木) 17:57:160803デフォルトの名無しさん
2008/10/23(木) 19:58:10明示的に-version=Posixってするのをエラーにまでする必要はあるんだろうか……
0804デフォルトの名無しさん
2008/10/23(木) 20:46:17C++以上の変態言語に進化してるように見えてならないのだけど実際のところどうなんでしょう
0805デフォルトの名無しさん
2008/10/23(木) 20:56:35C++と聞くといつもDTLのことが思い出される
0806デフォルトの名無しさん
2008/10/24(金) 00:12:21enum X = "X" ~ s ;
}
void main(){
auto x = X!"aaa";
writeln(x);
}
まるでC++0xのUser-Definedリテラル!
0807デフォルトの名無しさん
2008/10/24(金) 00:17:36void foo(alias F)() { F("hello"); }
void main() { foo! (string msg){}; }
みたいなのは無理か。
世界が広がる気がしたんだが。
0808デフォルトの名無しさん
2008/10/24(金) 01:11:080809デフォルトの名無しさん
2008/10/24(金) 02:04:420810デフォルトの名無しさん
2008/10/24(金) 02:39:100811デフォルトの名無しさん
2008/10/24(金) 02:44:27これ覚えてる人いるのかね
0812デフォルトの名無しさん
2008/10/24(金) 03:14:21mixin用にコードを書くときとか便利。
0813デフォルトの名無しさん
2008/10/24(金) 04:28:31話逸れるけども、例を見せてコードで語るときは、なるべくautoは避けてもらえるとありがたい。
q{hoge}が文字列になるという情報が省略されてちゃ、変数に代入可能な何かだとしか読み取れない。
autoって可読性を損なう誤用がたくさん生まれそうでちょっと怖い。
書きやすいより読みやすい方が大事だぜー。
0814デフォルトの名無しさん
2008/10/24(金) 04:46:54mixin(x);
}
void main(){
_do!q{
writeln("Hello, world");
};
}
0815デフォルトの名無しさん
2008/10/24(金) 05:11:06rubyのブロック付き関数呼び出しみたいなことができそうだな
0816デフォルトの名無しさん
2008/10/24(金) 06:56:440817デフォルトの名無しさん
2008/10/24(金) 13:50:440818デフォルトの名無しさん
2008/10/24(金) 14:34:280819デフォルトの名無しさん
2008/10/24(金) 17:51:38>q{hoge}が文字列になるという情報が省略されてちゃ、変数に代入可能な何かだとしか読み取れない。
ごめん
ヒントなしで聞いてみたかったもんで
0820デフォルトの名無しさん
2008/10/25(土) 02:57:01ttp://vimeo.com/channel20241
0821デフォルトの名無しさん
2008/10/25(土) 04:12:08これでqが省略できれば…
0822デフォルトの名無しさん
2008/10/25(土) 04:36:59っていうかいったい何なんですか。
説明求む
0823デフォルトの名無しさん
2008/10/25(土) 05:35:420824デフォルトの名無しさん
2008/10/25(土) 07:52:27この例だとあまり意味ないけど、使い道はなきにしもというところだね
void main() {
auto a = new Array!(int);
a.a = [0,1,2,3,4,5,6,7,8,9];
a.each!q{ |i|
writefln(i+5);
};
}
void getRubyStyleBlockArgument(string s, out int begin, out int end) {
foreach(int i, const char c; s) { if(c=='|') {begin=i+1; break;} }
if(begin==-1) static assert("There is mp Ruby Style Iterator Argument");
else foreach(int i, const char c; s[begin..$]) { if(c=='|') {end=i+begin; break;} }
if(end==-1) static assert("There is mp Ruby Style Iterator Argument");
}
string getRubyStyleBlockArgument(string s) {
int begin=-1, end=-1; getRubyStyleBlockArgument(s, begin, end);
return s[begin..end];
}
string getRubyStyleBlockExpressions(string s) {
int begin=-1, end=-1; getRubyStyleBlockArgument(s, begin, end);
return s[end+1..$];
}
class Array(T) {
T[] a;
void each(string x)() {
mixin("foreach(ref "~getRubyStyleBlockArgument(x)~"; a) {"~getRubyStyleBlockExpressions(x)~"}");
}
}
0825デフォルトの名無しさん
2008/10/25(土) 08:15:330826デフォルトの名無しさん
2008/10/25(土) 08:45:25これはひどいw
構文がほぼ拡張されている
0827デフォルトの名無しさん
2008/10/25(土) 08:47:59なかったら何やってるんだかわからなさすぎる
0828デフォルトの名無しさん
2008/10/25(土) 09:14:41これは変態過ぎるwww
|hoge| ってDの構文としてvalidなんだな
0829デフォルトの名無しさん
2008/10/25(土) 09:36:21Ruby化とかマジ勘弁して欲しいわ
0830デフォルトの名無しさん
2008/10/25(土) 10:13:13q{}が受け入れるのは、構文としてvalidなものじゃなくて、トークンとしてvalidなものだから。
0831デフォルトの名無しさん
2008/10/25(土) 10:14:020832デフォルトの名無しさん
2008/10/25(土) 10:40:37関数テンプレートはfunc(array) => array.func 変換できないんだっけ?
void main() {
[0,1,2,3,4,5,6,7,8,9].each!q{
|i|writefln(i+5);
};
}
void each(string x,T)(T[] a) {
mixin("foreach(ref "~getRubyStyleBlockArgument(x)~"; a) {"~getRubyStyleBlockExpressions(x)~"}");
}
0833デフォルトの名無しさん
2008/10/25(土) 10:58:32本来はできるが、!の形式でテンプレートパラメータを与えるとできない。多分バグ。
0834デフォルトの名無しさん
2008/10/25(土) 12:25:22void main(){
[1].f();
[2].f;
}
void f(T)(T[] a){}
0835デフォルトの名無しさん
2008/10/25(土) 12:30:27>>772 2.020からっぽいよ
0836デフォルトの名無しさん
2008/10/25(土) 12:51:13[0,1,2,3].reverse;
これが通るのは気持ちいいな。
型の自動推定ができるとテンプレートでもこれがいけるのか。
しかしstd.algorithmあたりはソースを覗くと結構魔窟。
>824をいじってて気づいたが、実行時関数実行ではassertがstatic assert並に動作するのね。
当たり前といえば当たり前だが。
あとstd.string.toStringがコンパイル時動作しないとか……動的配列を使ってるんだろうけどね。
0837デフォルトの名無しさん
2008/10/25(土) 13:26:58書いてて面倒になってきたのでやめたが、
formula!q{ Σᵢ₌₁ⁿ(i^2) }
を
reduce!("a + b")(0, map!("pow(a, 2)")( i[1..n]) ))
に変換する程度ならたぶん書ける気がする
Unicode文字がつぶれてたらすまん
0838デフォルトの名無しさん
2008/10/25(土) 14:23:150839デフォルトの名無しさん
2008/10/25(土) 14:35:120840デフォルトの名無しさん
2008/10/25(土) 14:39:42コンパイル時に文字列いじり回してDソースにトランスレートするよりよっぽどスマートだ。
あとrubyのブロックはフツーに欲しい。
0841デフォルトの名無しさん
2008/10/25(土) 14:43:57最低限でも、デリゲートの引数の型を推論する機能は必要だ。
0842デフォルトの名無しさん
2008/10/25(土) 15:05:16HTML周辺はPHPやらRuby(ERB)やらJavaScriptやらで地獄だろうな、と思ったけど、
そういやかつてはD言語もHTML埋め込み可能だったな。意味合いが違うけど。
0843デフォルトの名無しさん
2008/10/25(土) 15:11:07class A{]
class B:A{}
A delegate() x = B delegate(){return new B;};
void delegate(A) y = void delegate(B){};
その前にこれが欲しい
0844デフォルトの名無しさん
2008/10/25(土) 15:14:28class A{}
class B:A{}
A delegate() x = delegate B(){return new B;};
void delegate(A) y = delegate void(B){};
0845デフォルトの名無しさん
2008/10/25(土) 15:19:30void delegate(void) x = function void(){};
そのまえにこれがほしい
0846デフォルトの名無しさん
2008/10/25(土) 15:20:17void delegate() x = function void(){};
0847デフォルトの名無しさん
2008/10/25(土) 17:25:14外国でも"The Programing Language H(entai)"とか根ざそうか
むしろTPLHのパイオニアとして君臨するのも
0848デフォルトの名無しさん
2008/10/25(土) 18:15:160849デフォルトの名無しさん
2008/10/25(土) 18:23:280850デフォルトの名無しさん
2008/10/25(土) 22:55:030851デフォルトの名無しさん
2008/10/25(土) 23:07:480852デフォルトの名無しさん
2008/10/25(土) 23:19:560853デフォルトの名無しさん
2008/10/25(土) 23:20:07いや、その理屈はおかしい
変態が嫌になってD大陸に移住したのに、そこもまた変態の国だったなんて勘弁してよ
0854デフォルトの名無しさん
2008/10/25(土) 23:24:35ところで、モジュール名と関数名が文字列として欲しいんだけど、
何とか手に入らないもんかな。
ソースに静的文字列として毎回書かないとダメですか。
0855デフォルトの名無しさん
2008/10/26(日) 00:26:44writefln(moduleinfo.name);
これで使っているモジュール名が取れたりするけど
*Info系はまだまだ充実してない気がする
0856デフォルトの名無しさん
2008/10/26(日) 00:39:01でいいよ
0857デフォルトの名無しさん
2008/10/26(日) 00:42:14import std.stdio;
alias std.stdio hoge;
void main(){
writefln(f!main); // "main()"
writefln(f!f); // "f(alias F)"
writefln(f!(std.stdio)); // "module stdio"
writefln(f!(hoge)); // "module stdio"
}
string f(alias F)(){ return ((F)).stringof; }
0858デフォルトの名無しさん
2008/10/26(日) 07:33:44俺Java
ネイティブ行けるJavaみたいなの期待してたんだけど
こんなんならJavaのネイティブコンパイラの改良を期待した方がよさそうだぜ…
0859デフォルトの名無しさん
2008/10/26(日) 11:09:18テンプレートが強化されてるのがD言語だぜ?
いつかこうなることは分かってたはず
0860デフォルトの名無しさん
2008/10/26(日) 11:15:580861デフォルトの名無しさん
2008/10/26(日) 11:52:310862デフォルトの名無しさん
2008/10/26(日) 12:43:22ちょっと気味悪い書き方「も」できるだけで、>>849の言うように
一般ユーザーはより可読性が高い安全な書き方をすればいいと思うよ
0863デフォルトの名無しさん
2008/10/26(日) 13:15:090864デフォルトの名無しさん
2008/10/26(日) 13:49:30俺の言語マニア度からするとfreebasicあたりにしといたほうがよさそうだ
0865デフォルトの名無しさん
2008/10/26(日) 19:09:09おぉ、そんなアンドキュメンテッドな仕様があったのか。マジで知らなかった。
ただ、欲しいのは自分のモジュール名、自分の関数名なんで
このままではちょっと使えないか。
0866デフォルトの名無しさん
2008/10/26(日) 19:19:09こんな書き方使わないっちゅーのにw
0867デフォルトの名無しさん
2008/10/27(月) 19:12:00setjmpはいけたが、longjmpでAccess Violationと怒られた
なんとかなんないすか?
0868デフォルトの名無しさん
2008/10/27(月) 20:16:420869867
2008/10/27(月) 21:58:35コルーチンを実装したくて色々試してたんだけど、
Win32のファイバを使ったらなんかうまくいったからいいや
0870デフォルトの名無しさん
2008/10/27(月) 22:24:140871デフォルトの名無しさん
2008/10/27(月) 23:46:17実装見た感じD特有のなんかってものはなさそうだけど・・・
0872デフォルトの名無しさん
2008/10/28(火) 13:15:04コルーチンのスタックもスイープしないといけないはずだか
言語レベルでサポートしてくれないとうまくいかないと思う
0873デフォルトの名無しさん
2008/10/28(火) 16:28:02コルーチンのスタックのアドレスをcore.memory.GC.addRootするだけだと思う
0874デフォルトの名無しさん
2008/10/28(火) 16:50:07スタックポインタまでは面倒見てくれないので無駄が多いのと
Win32のファイバには使えない
0875デフォルトの名無しさん
2008/10/28(火) 18:42:27コンパイル通すのもそんなに難しくなかったし、GCについても大丈夫な根拠が書かれてた気がする。
ただ例外が飛んだりメモリが溢れたりすると無言で死ぬ。
0876デフォルトの名無しさん
2008/10/28(火) 20:28:13仮想スタックをすべてスキャンする方法だ
スタックポインタを超えてスキャンするので無駄は多い
300バイト程度を想定しているみたいで少数スレッドなら問題ないと思う
言語レベルでの実装であれば本物のスタックと同様
スタックトップまでスキャンするように実装できるはず
0877デフォルトの名無しさん
2008/10/28(火) 21:02:34>ただ例外が飛んだりメモリが溢れたりすると無言で死ぬ。
Dの例外がWin32構造化例外を使ってるかは確認してないけど、少なくともD研究室のは構造化例外が出た時点で死ぬと思う。
理由はThread Information Blockの書き換えが不完全なせいなんだけど(実スタックとTIBのスタックが一致しないので
スタックの範囲チェックで死ぬ)、書籍になったC++版だとそれを回避するために、確かスタックに巨大な配列を用意して
それを使うとか酷い方法で回避されてた気がする。
TangoのはTIBの書き換えもやってるしWin/Linuxで動くしTangoの使っておくほうがいいかと。
0878デフォルトの名無しさん
2008/10/28(火) 22:04:300879869
2008/10/28(火) 23:53:36コルーチンのエントリー関数(?)で全部finallyして処理してやればいいんじゃね?
>>871
tangoは盲点だったわ。嫌いで使ってなかったんだ。
dmdのtango仲良し政策でいつか使うかもしれない
>>878
物足りないかもしれないけど、デリゲートを使うとか?
0880デフォルトの名無しさん
2008/10/29(水) 00:50:51Dにも名前つきパラメータほしいよう
0881デフォルトの名無しさん
2008/10/29(水) 01:40:51VBのさいつぁいですかいな。いや、pythonにもあるけどさ。
オーバーロードどうなる?
0882デフォルトの名無しさん
2008/10/29(水) 01:58:16構造体の要素の名前付き初期化と構文を統一して欲しいな
ってことで破壊的変更まだー?
0883デフォルトの名無しさん
2008/10/29(水) 07:35:26ってかこの前のバージョンからphobosに統合されてる気がする>Fiber
http://www.kmonos.net/alang/d/2.0/phobos/std_thread.html#Fiber
0884デフォルトの名無しさん
2008/10/29(水) 08:48:29tango入れるの面倒だし命名気に入らないしな俺に超朗報。
0885デフォルトの名無しさん
2008/10/29(水) 08:56:000886デフォルトの名無しさん
2008/10/29(水) 11:27:43てか、日本語もう更新されてるのか すげぇ
0887デフォルトの名無しさん
2008/10/29(水) 21:55:07メソッドシグネチャがきっとすごいことになっているから、
素直に連想配列引き渡したほうがいいと思うなぁ。
0888デフォルトの名無しさん
2008/10/29(水) 22:04:57強い型システムのDとは相容れないよ。
0889デフォルトの名無しさん
2008/10/29(水) 22:07:22名前付きパラメータでそれらの制約を緩和してもいい気がする。
自分や他人が眺めるときの可読性の向上にも役立つだろうし。
さらに発展して、
func.paramtuple t;
t.x = 3;
t.y = 4;
t.z = "hoge";
func(t); //func(x:3, y:4, z:"hoge");
とか。
0890デフォルトの名無しさん
2008/10/29(水) 22:29:280891デフォルトの名無しさん
2008/10/29(水) 22:38:040892デフォルトの名無しさん
2008/10/29(水) 22:39:450893デフォルトの名無しさん
2008/10/29(水) 22:43:080894デフォルトの名無しさん
2008/10/29(水) 22:49:17参考にしてみたらどうだろう
0895デフォルトの名無しさん
2008/10/29(水) 22:59:09>>883
0897デフォルトの名無しさん
2008/10/29(水) 23:03:10Pythonの**みたいに
0898デフォルトの名無しさん
2008/10/29(水) 23:18:29こっちのが気になった。メタプログラミングのためにeval相当を入れるって
あんまり筋が良いとは思えないな・・・。
0899デフォルトの名無しさん
2008/10/29(水) 23:51:52現状ではライブラリは、実行時にテンポラリファイルにC#のソースコードを書き出して、
それを(CUI用の)コンパイラでビルドして参照・実行するという方法をとってる。
コンパイラのコア部分が直接操作できるようになれば、事態はかなり改善されるよね。
0900デフォルトの名無しさん
2008/10/29(水) 23:58:26https://docs.google.com/View?docid=dcj4xk6_17ffc7nmgv
いつか来た道
0901デフォルトの名無しさん
2008/10/30(木) 03:09:31C++にはいらない派の主張はそれと,仮引数の名前の問題が主なものだったような?
Dでも構造体にすればいいのはわかってるけど時勢はin-placeに書く流れのはず.
無名関数とか.
0902デフォルトの名無しさん
2008/10/30(木) 12:42:18alias const(X) CX;
static assert(is(typeof(CX.x) == const(int*))); // static assert is false
これって推移的なconstに反するのでは?
あと、ほんと↓みたいに書きたかったけどこっちはコンパイルエラー
struct X{int* x;}
static assert(is(typeof(const(X).x) == const(int*)));
ここら辺仕様なのかバグなのかいまいち判断付かん…
0903デフォルトの名無しさん
2008/10/30(木) 12:52:13typeof(cx.x) => const(const(int)*)
となってるし、
alias const(X) CX; に対して
typeof(CX.x) => int*
になるのは仕様から考えればバグだろうな。
typeof(const(X).x) は typeof((const(X)).x) と書けば通るが、
これも本来なら前者も認められるべきだと思う。
0904デフォルトの名無しさん
2008/10/30(木) 21:47:34強制ID実装を駄目元で頼み込んでみた。
もし賛同してくれる人がいたら同意のレスつけてください。
0905デフォルトの名無しさん
2008/11/01(土) 19:07:020906デフォルトの名無しさん
2008/11/01(土) 21:59:180907デフォルトの名無しさん
2008/11/01(土) 22:30:52この変更…どう思う?
0908デフォルトの名無しさん
2008/11/01(土) 22:32:550909デフォルトの名無しさん
2008/11/01(土) 22:44:46invariant(Derived)* -> invariant(Base)*
invariant(Derived)* -> const(Base)*
const(Derived)* -> const(Base)*
Derived* ->const(Base)*
の変換は安全なんだよね。
この辺を上手く整理できないかなあ。
0910907
2008/11/01(土) 23:10:43それもそうなんだけど、それ以上に
alias invariant( char)[] Iutf8;
これを勘弁してほしい…
せっかくPhobosがTangoに歩み寄る感じで変更が加わったのに、
Tangoはそれを完全無視した路線を突っ走っているというこの事実…っ!
0911デフォルトの名無しさん
2008/11/02(日) 02:06:340912デフォルトの名無しさん
2008/11/02(日) 02:27:52たぶんそのうち置き換わる。
なかったことになっても、immutable->invariantは単純な置換で書き換えられるから、
いまのうちからimmutable使うようにしてもいいかもね。
0913デフォルトの名無しさん
2008/11/02(日) 05:15:07小さいD言語コミュニティを分断させようとしてるようにしか見えない
0914デフォルトの名無しさん
2008/11/02(日) 05:32:060915デフォルトの名無しさん
2008/11/02(日) 08:40:330916デフォルトの名無しさん
2008/11/02(日) 14:04:36そういう無意味なaliasはやめろって公式に書いてあったような気が
http://www.kmonos.net/alang/d/2.0/dstyle.html
> alias int* pint;
少なくともこれはダメらしいし。
0917デフォルトの名無しさん
2008/11/02(日) 14:17:590918デフォルトの名無しさん
2008/11/02(日) 14:43:23utf-8の文字列を明示するものとして使うならあり(typedefの方が良い気がするが)。
asciiの文字列と区別できるし。
0919918
2008/11/02(日) 14:46:310920デフォルトの名無しさん
2008/11/02(日) 14:46:33ASCIIのほうこそubyteをtypedefして使うべき。
0921デフォルトの名無しさん
2008/11/02(日) 15:03:13あとstringは仕様では決められていなく、ライブラリレベルの問題。
0922デフォルトの名無しさん
2008/11/02(日) 17:30:15彼らには型のサイズが不定なCの上でバイナリ互換を保つ必要があるって事情が
あるだけで別に涙目にはならんかと
0923デフォルトの名無しさん
2008/11/04(火) 08:23:57charはutf8じゃないときがある。stringも同じ。
utf8だと保証する意味でIutf8とするのはあり、ってことなら。
それに両方使えるようにするのを目的にobject.d辺りの
ライブラリと言語機能の癒着をいくつか断ち切ったんだよね?(読めてないけど)
だったら今回の変更を無視してはいないんじゃないかな。
あとDでOS書くのも楽になってるんじゃないのか。
0924デフォルトの名無しさん
2008/11/04(火) 09:27:34http://www.kmonos.net/alang/d/2.0/type.html
0925デフォルトの名無しさん
2008/11/04(火) 12:41:58現状windowsのvoid main(string[] args)のargsには
utf8じゃない文字が入るんだ・・・
0926デフォルトの名無しさん
2008/11/04(火) 13:00:260927デフォルトの名無しさん
2008/11/04(火) 13:23:41とかやればいいんじゃね
0928デフォルトの名無しさん
2008/11/04(火) 14:39:34継承元に同名の関数がある場合はどうしますか。
名前分けろと言われればそれまでですが、
関数ハイジャック並にうまく解決できればなあと。
interface X { int f(); }
interface Y { int f(); }
interface Z { string f(); }
class A : X, Y, Z {
int f() { return 1; } // X, Yの各f()の動作を分けるには?
string f() { return ""; } // 返り値がnot covariantとなる問題を避けるには?
}
そういえば、そもそも
class A {
int f() { return 1; }
string f() { return ""; }
}
これが通ったりするんですが、
A a = new A;
writefln(a.f());
と書いたりすれば当然両方の関数にマッチするので、この解決ってどうやるんでしょうか。
0929デフォルトの名無しさん
2008/11/05(水) 18:28:45class A : X, Y, Z {
// interface X
void f(){}
// interface Y
void g(){}
// interface Z
void h(){}
}
俺はいつも上のように書いてるから
class A : X {...}, Y {...}, Z {...}
と書けてもいいなという気がしている
0930デフォルトの名無しさん
2008/11/06(木) 01:42:49// Xの実装
},
Y {
// Yの実装
} {
// その他のメンバ
}
ってなるのか?
0931デフォルトの名無しさん
2008/11/06(木) 03:24:310932929
2008/11/06(木) 09:12:15このままだとA本体の実装を書くところがダメになるのか・・・
0933デフォルトの名無しさん
2008/11/06(木) 09:48:06in {}
out {}
body {}
式に
class A : X, Y
body {}
override X {}
override Y {}
とか
0934デフォルトの名無しさん
2008/11/06(木) 11:58:430935デフォルトの名無しさん
2008/11/06(木) 12:18:460936デフォルトの名無しさん
2008/11/06(木) 12:27:480937デフォルトの名無しさん
2008/11/06(木) 12:38:23T s = new T;
が通ったり通らなかったりするのは気持ち悪い。
0938デフォルトの名無しさん
2008/11/06(木) 12:52:19をるたんの答えにわろたw
0939デフォルトの名無しさん
2008/11/06(木) 13:14:550940デフォルトの名無しさん
2008/11/06(木) 16:51:09void main()
{
{
class CTest{
this(){}
}
}
{
class CTest{
this(){}
}
}
0941デフォルトの名無しさん
2008/11/06(木) 17:23:16{
(){
class CTest{
this(){}
}
}();
(){
class CTest{
this(){}
}
}();
}
ちょっとJavascriptを思い出した
0942デフォルトの名無しさん
2008/11/06(木) 18:58:11全体を括弧でくくらなくていいってのは良いのに
0943デフォルトの名無しさん
2008/11/06(木) 19:20:28シンメトリーって美しいな
0944デフォルトの名無しさん
2008/11/06(木) 19:45:580945デフォルトの名無しさん
2008/11/06(木) 19:52:240946デフォルトの名無しさん
2008/11/08(土) 07:18:20VC++10でC++0xがかなりはいってくるというか・・・
0947デフォルトの名無しさん
2008/11/08(土) 13:56:56一通り揃うまでに早くて3〜5年はかかるのかねえ
vcよりもdmcの++0x対応のほうがDには直結していると思うけど
何かアナウンスってないの>ウォチしてる方々
0948デフォルトの名無しさん
2008/11/08(土) 14:03:400949947
2008/11/08(土) 15:21:41---
>DMCは今度のC++標準の改正を取り込むの?
時間が許すときに。いくらか変更を加えるつもりだったけれど
最後の(C++標準化委員会の)会議で多くの仕様変更があった。
>64ビットについてはどう?
まだ知らない。
---
翻訳ソフトの結果を弄ってみたけどこんな感じ?
(最後のI don't know yet.のニュアンスがわかんない)
0950デフォルトの名無しさん
2008/11/08(土) 17:06:32記事名的に考えて
0951デフォルトの名無しさん
2008/11/08(土) 17:59:48てっきりDMCへの実装がどうなるかの質問としか思ってなかったので...
投げやりなのかユーモアなのか不気味に思えてた。
(dmcが64ビットexe生成対応せんことにはdmdもそうならないだろうし)
0952デフォルトの名無しさん
2008/11/08(土) 19:20:09---- test.d ----
private int test1 = 100;
private enum { test2 = 200, }
---- main.d ----
import test;
void main()
{
assert(test1); // エラー
assert(test.test1); // OK(*1)
assert(test2); // OK(*2)
}
*1と*2がコンパイルエラーにならないのですが、これは正しいのでしょうか?
両方ともprivateなので通らないと思っていたのですが…。
使用したコンパイラはdmd.1.036です。
0953デフォルトの名無しさん
2008/11/08(土) 21:14:36private import win32.windows: HWND;
とかやっても別のところで名前がconflictしてるよって言われたりするし。
ひょっとしてバグなのかもしれない。
現状はとりあえずそういうもんなのかと思って諦めて使ってるけど…
0954デフォルトの名無しさん
2008/11/08(土) 21:52:400955デフォルトの名無しさん
2008/11/09(日) 00:00:31モジュールに限らず普通のクラスインスタンスのprivateメンバもアクセスできるね
これてっきりmixinのバグかと思ってたら、もっと基本的なところのバグだったんだなぁ
0957デフォルトの名無しさん
2008/11/09(日) 12:47:090958デフォルトの名無しさん
2008/11/11(火) 21:39:53仮想関数の中身だけ違う派生クラス群をstatic opCallで製造しているのだが、
なんとなくnewにしたいときもある。
C c = C(1);
abstruct class C {
static opCall(int x) {
switch(x) {
case 1:
return new D;
...
}
...
}
class D : C {...}
0959デフォルトの名無しさん
2008/11/11(火) 21:46:150960デフォルトの名無しさん
2008/11/11(火) 21:52:25opDotのおかげで委譲は異常な簡単さになったが、
ちょっとオーバーヘッド計ってくる
0961デフォルトの名無しさん
2008/11/11(火) 22:03:00誰が上手いこと言えと
0962デフォルトの名無しさん
2008/11/11(火) 22:16:440963デフォルトの名無しさん
2008/11/11(火) 23:08:23関数呼出しオーバーヘッドは確実に2回分になるけど、
メンバ変数に代入するコスト1〜2回分=メンバ関数を参照するコスト10〜20回分くらいなんで、
inlineにしたいくらいのシビアさを要求されない限り気にならないかなというところ。
0964デフォルトの名無しさん
2008/11/11(火) 23:10:260965デフォルトの名無しさん
2008/11/12(水) 00:00:130966デフォルトの名無しさん
2008/11/12(水) 23:51:38template A(int N) if(N%2==0)
これこのまま残るのかねえ
0967デフォルトの名無しさん
2008/11/12(水) 23:59:130968デフォルトの名無しさん
2008/11/13(木) 07:22:530969デフォルトの名無しさん
2008/11/13(木) 11:51:27template A(int N) if(N%2==0) {
alias "偶数" A;
} else {
alias "奇数" A;
}
0970デフォルトの名無しさん
2008/11/13(木) 12:03:20template A(int N) {
static if(N%2==0) {}
else {}
}
0971デフォルトの名無しさん
2008/11/13(木) 12:04:060972デフォルトの名無しさん
2008/11/13(木) 12:09:15まあどうでもいいけど。
0973デフォルトの名無しさん
2008/11/13(木) 19:50:06ttp://www.kmonos.net/alang/d/2.0/template.html#Constraint
0974デフォルトの名無しさん
2008/11/13(木) 21:23:190975デフォルトの名無しさん
2008/11/13(木) 21:25:360976デフォルトの名無しさん
2008/11/13(木) 21:35:480977デフォルトの名無しさん
2008/11/13(木) 21:50:08メンバに書き込むと遅くなる(=書き込まなければ早い)とか、
結構細やかに最適化が行われているんですね。
過去スレ、関連スレは >>2
■本家
http://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)
■コンパイラ
http://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
http://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF)
ttp://dsource.org/ (dsource)
ttp://tinyurl.com/3da5oa (C/C++に疲れた人のD言語)
ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語)
ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか)
ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座)
ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画)
ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games)
■ IDE
ttp://dronten.googlepages.com/dscite (DSciTE)
ttp://forums.codeblocks.org/index.php?board=20.0 (Code::Blocks)
ttp://www.dprogramming.com/entice.php (Entice Designer)
ttp://www.dsource.org/projects/descent (Descent)
ttp://www.dsource.org/projects/poseidon (Poseidon)
0979テンプレ続き。過去、関連スレは29chでまとめた
2008/11/14(金) 09:24:16http://makimo.to:8000/cgi-bin/search/search.cgi?q=D%8C%BE%8C%EA&sf=2&all=on&view=table&shw=5000
その他関連スレ
バイナリをゲロる言語の魅力って何?
http://pc11.2ch.net/test/read.cgi/tech/1160869311/
Eclipse統合M26【Java/C/PHP/Ruby/Python/Perl】
http://pc11.2ch.net/test/read.cgi/tech/1224536200/
eclipseってそんなに良いか?【エクリプス】
http://pc11.2ch.net/test/read.cgi/tech/1099300344/
0980失敗したので投稿し直し
2008/11/14(金) 09:25:30http://makimo.to:8000/cgi-bin/search/search.cgi?q=D%8C%BE%8C%EA&sf=2&all=on&view=table&shw=5000
その他関連スレ
バイナリをゲロる言語の魅力って何?
http://pc11.2ch.net/test/read.cgi/tech/1160869311/
Eclipse統合M26【Java/C/PHP/Ruby/Python/Perl】
http://pc11.2ch.net/test/read.cgi/tech/1224536200/
eclipseってそんなに良いか?【エクリプス】
http://pc11.2ch.net/test/read.cgi/tech/1099300344/
統合開発環境Eclipseプラグイン開発QA
http://pc11.2ch.net/test/read.cgi/tech/1081517094/
"Code of the Nerds" Digital Mars C/C++
http://pc11.2ch.net/test/read.cgi/tech/1044210976/
0981デフォルトの名無しさん
2008/11/14(金) 11:56:350982デフォルトの名無しさん
2008/11/14(金) 12:05:31http://pc11.2ch.net/test/read.cgi/tech/1226631916/
0983デフォルトの名無しさん
2008/11/15(土) 10:53:360984デフォルトの名無しさん
2008/11/15(土) 14:27:13そもそも、ラベルのアドレスをランタイムで手に入れてどうするのかと思うけど、
asm 文で拾えないか?
0985デフォルトの名無しさん
2008/11/15(土) 14:49:14http://jp.rubyist.net/magazine/?0008-YarvManiacs
0986デフォルトの名無しさん
2008/11/15(土) 15:11:15ちょとしたパーサかいててジャンプテーブルが作りたい、要するに>>985なんだけど、
asmでも取れないみたいなんだよねえ…
ネスト関数使えば同等のものを書けなくもないんだけど、
コードフローがぐちゃぐちゃになるし、ほんと痒いところに手が届かない。
0987デフォルトの名無しさん
2008/11/15(土) 17:45:14ところで参照の配列みたいなものを返したいのだが、定型的方法はありますか?
boost::multi_indexみたいな感じで、Rangeに別のビューを持たせたいなあと思うわけです。
ポインタを返してもいいがユーザサイドとしては面倒かなと。
0988デフォルトの名無しさん
2008/11/16(日) 08:34:03無名デリゲートで配列をつくるとか
void delegate()[NUM_CMD] tbl;
tbl[CMD_PRINT] = {
writef("Hello World");
};
tbl[CMD_COPY] = {
writef("こぴー");
};
こんなコードばっかり書いてるとC/C++に戻れないぜ
0989デフォルトの名無しさん
2008/11/16(日) 13:06:430990デフォルトの名無しさん
2008/11/16(日) 14:16:580991デフォルトの名無しさん
2008/11/16(日) 16:08:220992デフォルトの名無しさん
2008/11/16(日) 16:27:34990ではないけど
ttp://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.announce&article_id=14136
この記事のことじゃないかな。
要約するとbugzillaに投票できるようになった。ユーザーは10票まで嫌いなバグに投票できる。
下記URLで少なくともvote1件がある記事が降順で表示される
ttp://d.puremagic.com/issues/buglist.cgi?query_format=advanced&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&votes=1&order=bugs.votes,bugs.bug_id
あとadvanced searchページでvote数で絞れるようになった
0993デフォルトの名無しさん
2008/11/16(日) 17:47:39じゃあコマンドライン引数の中身がutf8じゃないのをお願いしよかな
何に票が集まるのか楽しみ
0994デフォルトの名無しさん
2008/11/16(日) 19:13:33これが一番人気か
0995デフォルトの名無しさん
2008/11/16(日) 20:02:280996デフォルトの名無しさん
2008/11/17(月) 09:04:040997デフォルトの名無しさん
2008/11/17(月) 10:32:32http://pc11.2ch.net/test/read.cgi/tech/1226631916
0998デフォルトの名無しさん
2008/11/17(月) 10:33:34http://pc11.2ch.net/test/read.cgi/tech/1226631916
0999デフォルトの名無しさん
2008/11/17(月) 10:34:42http://pc11.2ch.net/test/read.cgi/tech/1226631916
1000デフォルトの名無しさん
2008/11/17(月) 10:35:47http://pc11.2ch.net/test/read.cgi/tech/1226631916
次へ
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。