D言語 Part31

このエントリーをはてなブックマークに追加
1Win64をやりたい場合はMSVCwo
プログラミング言語 D (D Programming Language) について語るスレッドです。

■本家
http://dlang.org/ - 公式(英語)
http://www.kmonos.net/alang/d/ - 公式の和訳
http://d.puremagic.com/issues/ - D言語バグ報告
https://github.com/D-Programming-Language - D言語開発リポジトリ

■Wiki
http://dusers.dip.jp/ - D言語友の会(日本語フォーラムあり)
http://prowiki.org/wiki4d/ - Wiki4D(公認Wiki)

■前スレ
D言語 Part30
http://toro.2ch.net/test/read.cgi/tech/1343660743/

■過去スレ、関連スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=D%8C%BE%8C%EA&sf=2&all=on&view=table&shw=5000
■IDE
http://www.dsource.org/projects/visuald - Visual D(Visual Studioプラグイン)
http://code.google.com/a/eclipselabs.org/p/ddt/ - DDT(Eclipseプラグイン)
http://mono-d.alexanderbothe.com/ - Mono-D (MonoDevelop プラグイン)

■ライブラリ
http://www.dsource.org/projects/dwt - DWT(GUIライブラリ)
http://www.dsource.org/projects/gtkd - GtkD(GUIライブラリ)
https://github.com/Rayerd/dfl - DFL(GUIライブラリ・非公式最新版)
http://www.dsource.org/projects/derelict - Derelict(SDL/OpenGLなどのポーティング)
http://www.ku6.jp/keyword6/1.html - 傾き指向プログラミング(SDLなどのポーティング)

■D言語で作られたゲーム
http://www.nicovideo.jp/mylist/4453698 - D言語で作られた芝ゲー niconico動画
http://www.asahi-net.or.jp/~cs8k-cyu/ - ABA Games
3デフォルトの名無しさん:2013/01/21(月) 15:17:29.09
新スレ記念にマジレスすると
Qt とか Python とか知ってしまうと
D いらないんだよね
4デフォルトの名無しさん:2013/01/21(月) 16:59:54.30
dusers.dip.jp/ - D言語友の会(日本語フォーラムあり)
403
5デフォルトの名無しさん:2013/01/21(月) 17:18:13.62
ひょっとしたら復活するかもしれないので一応そのままにしておいた
が、そろそろ一ヶ月たつから見込みは低い
避難所がほしいな
6デフォルトの名無しさん:2013/01/21(月) 17:34:27.03
dmd.exe -c -inline -O -release -w -version=Unicode -version=Windows7 -version=WondersBuild -ofwonders\gdiplus.obj wonders\gdiplus.d
wonders\gdiplus.d(1147): Warning: min property is deprecated, use min_normal instead
wonders\gdiplus.d(6005): Error: class wonders.gdiplus.CachedBitmap identity assignment operator overload is illegal
7デフォルトの名無しさん:2013/01/21(月) 18:46:05.48
core.sys.windows.windows 定義の数値型は64bitに対応できてないね
もうバグ報告されてるかもしれないけど
英語書けないので誰かよろしく…
8デフォルトの名無しさん:2013/01/21(月) 20:12:47.72
LONG_PTRとかは対応してるけど
WPARAMとかLPARAMとかLRESULTがuintとかint決め打ちなのが原因みたい
9デフォルトの名無しさん:2013/01/21(月) 21:29:01.16
やっぱりC/C++のintとかlongのサイズの型の定義モジュールがいるんだって
10デフォルトの名無しさん:2013/01/21(月) 21:56:12.97
cintとかcfloatとかcdouble…

あれ?
11デフォルトの名無しさん:2013/01/21(月) 22:09:45.22
まずcintを定義するために条件分岐が必要で、
次にDWORDみたいなのをcintを使って定義するために条件分岐が必要で…
12デフォルトの名無しさん:2013/01/21(月) 22:10:58.37
別名定義と条件コンパイルで何とかしてくれという方針では
13デフォルトの名無しさん:2013/01/21(月) 22:27:45.07
version(Win64) { }
14デフォルトの名無しさん:2013/01/21(月) 22:34:29.65
(size_tじゃ)いかんのか?
15デフォルトの名無しさん:2013/01/21(月) 23:36:13.58
com関連と64bitが整備されれば
Windows用のGUIアプリケーション作るときに視野に入ってくるんだけどな
手が届きそうなのに届かないw
16デフォルトの名無しさん:2013/01/23(水) 12:43:45.25
関数の引数に構造体の代わりに alias thisした型を入れたら暗黙的に型変換してくれないかなぁ・・・
opAssignでいけるかと思ったらそんなことなかった
17デフォルトの名無しさん:2013/01/23(水) 13:19:45.67
いや無理だろ
alias this以外にもメンバあったら死ぬじゃん
18デフォルトの名無しさん:2013/01/23(水) 17:09:08.13
bgzlrks
19デフォルトの名無しさん:2013/01/23(水) 20:23:01.64
なげーよ
20デフォルトの名無しさん:2013/01/23(水) 20:38:05.86
>>18
ロシア大使館に言えよ
21デフォルトの名無しさん:2013/01/24(木) 12:06:21.22
友の会 http://dusers.dip.jp
ソース貼付サイト(2.061)http://dpaste.dzfl.pl/

年末につながらなくなっていたが両方とも復活した
22デフォルトの名無しさん:2013/01/25(金) 03:28:31.95
ありがとうございます!
23デフォルトの名無しさん:2013/01/26(土) 17:30:10.97
DDTは最新のeclipseに対応していないんだ
24デフォルトの名無しさん:2013/01/26(土) 17:31:29.19
DDTステロ!
25デフォルトの名無しさん:2013/01/26(土) 17:38:17.43
DMDscriptってコンパイル通し作業行われてないんですか?
26デフォルトの名無しさん:2013/01/26(土) 19:44:56.20
ウォルター様は通し作業は有志が動作確認できるようにとわざわざチェックしないでリリースして下さります
27デフォルトの名無しさん:2013/01/26(土) 20:27:51.33
ラムダ式の時だけじゃなくてもうすべての場所でreturn省略できたらいいのに
28デフォルトの名無しさん:2013/01/26(土) 20:34:12.14
関数型言語とかはそうだな
でもあれ手続き型言語でやるとバグの温床だからな
29デフォルトの名無しさん:2013/01/26(土) 20:37:26.34
ハゲの温床に見えた俺
そろそろ寝るか
30デフォルトの名無しさん:2013/01/26(土) 20:40:59.94
return を廃止してその代わりに
関数の頭に fn みたいなキーワードを必須にするのなら
賛成してやってもいい
31デフォルトの名無しさん:2013/01/26(土) 21:00:12.74
なにそのjavascriptの派生言語みたいなそれ やめろよ
32デフォルトの名無しさん:2013/01/26(土) 21:07:14.30
それ何てrust
33デフォルトの名無しさん:2013/01/26(土) 21:16:25.75
一文なら、という条件付きならいいんじゃね
34デフォルトの名無しさん:2013/01/26(土) 21:20:10.90
>>28
詳しく知りたい
なんかまずいの?
35デフォルトの名無しさん:2013/01/26(土) 21:26:13.10
return忘れても
別の値が返ってとりあえず動いてしまうとか
36デフォルトの名無しさん:2013/01/26(土) 21:40:11.17
狙ってなくても戻り値を返してしまうからな
特に関数定義の頭で戻り値の型を明示しなくて良い場合(動的型や型推論付き)は
さらにややこしくなる、まあ組めなくはないけどね
37デフォルトの名無しさん:2013/01/26(土) 22:58:43.29
そんなこと言ってたらOCamlとかバグの塊でとてもじゃないけど使えないみたいな状況になってるはずなんだけど
38デフォルトの名無しさん:2013/01/26(土) 23:00:33.57
ウォルターの人生そのものであるD言語を
そう簡単に仕様変更するわけがないだろ!!
39デフォルトの名無しさん:2013/01/26(土) 23:02:33.16
OCaml は型チェックが厳しいから。
40デフォルトの名無しさん:2013/01/26(土) 23:15:46.04
少なくとも表向きは型のチェックなんてないように思うが
それでも型チェックがうるさいと判断するのかね?
41デフォルトの名無しさん:2013/01/26(土) 23:19:56.11
OCamlは整数の加算と小数の加算で演算子が変わるほど厳しいじゃん・・・
42デフォルトの名無しさん:2013/01/26(土) 23:22:29.97
関数が常に一文なら問題ないんじゃね
必ず戻り値を何か書かないといけないわけで
43デフォルトの名無しさん:2013/01/26(土) 23:30:01.83
関数定義をラムダ式を代入でもいけるようにしてほしいわ・・・
44デフォルトの名無しさん:2013/01/26(土) 23:40:12.59
enum func = (int a)=>a;
45デフォルトの名無しさん:2013/01/26(土) 23:40:14.40
enum f = (int n){ return n+1; }; // 旧
enum f = (int n) => n+1; // lambda
戻り値型の省略なんてしなくていいからreturn省略したい
enum f = int(int n){ n+1; };
これでいいじゃない・・
46デフォルトの名無しさん:2013/01/27(日) 00:11:52.28
それならセミコロンがないほうがいいな
最後の文にセミコロンが無い時に限りreturnの代わりになる、でどうだ

enum f = int(int n){ n+1 };
47デフォルトの名無しさん:2013/01/27(日) 01:24:29.69
ラムダ式だけは何か趣味機能な気がする
これあると便利な事ってどういう分野なんだ
48デフォルトの名無しさん:2013/01/27(日) 01:50:29.88
ラムダ式便利すぎるだろう
むしろ使わない方がおかしい
49デフォルトの名無しさん:2013/01/27(日) 02:07:51.61
サッパリ想像できない
具体例がほしい
50デフォルトの名無しさん:2013/01/27(日) 02:47:44.46
レンジとかアルゴリズム使わない人にはわからないかもね
51デフォルトの名無しさん:2013/01/27(日) 04:46:41.37
普通のdelegateリテラルで十分な気がするんだけど
52デフォルトの名無しさん:2013/01/27(日) 07:14:51.87
=>の糖衣構文はアルゴリズムに渡す時に素敵すぎるね
53デフォルトの名無しさん:2013/01/27(日) 07:54:38.16
記述が短くなるというのは想像以上にいい
これは実際に使う場面に行き当たらないと実感するの無理かも
54デフォルトの名無しさん:2013/01/27(日) 07:56:45.25
あれだ
推論可能な場面でいちいちautoでもvarでもなく
型名を書かなきゃいけないJavaとかに絶望するのといっしょの感覚かも
55デフォルトの名無しさん:2013/01/27(日) 09:24:01.61
どうせ引数の型あんまり省略できないし、delegateとはreturnの有無の差くらいしか無いと思うんだけどなあ・・
56デフォルトの名無しさん:2013/01/27(日) 09:31:30.61
便利かどうかなんて主観でしかないんだから互いに「お前がそう思うんならそうなんだろうお前ん中ではな」で終わる話
57デフォルトの名無しさん:2013/01/27(日) 11:49:13.97
平行線だったのは結果論だけどなー。
その主観が交わる可能性があった以上、コピペでまとめちゃうのはいくないっすよ
58デフォルトの名無しさん:2013/01/27(日) 12:00:05.55
( {...} ) <- こういうのがイヤ
59デフォルトの名無しさん:2013/01/27(日) 12:01:17.46
俺は好き
60デフォルトの名無しさん:2013/01/27(日) 12:48:16.97
>>58
ブレース消えるのいいよね
61デフォルトの名無しさん:2013/01/27(日) 13:17:04.96
我・乱無駄の名において命ず・消え去れ無礼衆!
62デフォルトの名無しさん:2013/01/27(日) 13:26:12.22
// delegateが無い場合
hoge(new class Func : IFunc { void func(Parameter p1, Parameter p2) {return p1 == ps;} });
hoge(new class Func : IFunc { void func(Parameter p1, Parameter p2) {return p1 != ps;} });
hoge(new class Func : IFunc { void func(Parameter p1, Parameter p2) {return p1 < ps;} });

// delegateが使える場合
hoge((Parameter p1, Parameter p2) {return p1 == ps;});
hoge((Parameter p1, Parameter p2) {return p1 != ps;});
hoge((Parameter p1, Parameter p2) {return p1 < ps;});

// ラムダ式が使える場合
hoge((p1, p2) => p1 == ps);
hoge((p1, p2) => p1 != ps);
hoge((p1, p2) => p1 < ps);

>>55
俺は大差があると思う
63デフォルトの名無しさん:2013/01/27(日) 13:57:07.48
ヒント:ラムダで引数の型が省略できる場合には関数リテラルでも同じ書き方ができる
64デフォルトの名無しさん:2013/01/27(日) 13:59:44.79
http://dlang.org/deprecate.html

今までdeprecated で生き延びていた機能の多くが
2.061で抹殺されていることに気づいた
65デフォルトの名無しさん:2013/01/27(日) 14:27:09.51
結局のところdelegateあるならラムダいらないんじゃね?と言う話
別にあって都合が悪いこともないから消せ!とは言わんけどw
66デフォルトの名無しさん:2013/01/27(日) 14:50:42.78
ラムダは構文糖だからいらないと言われても困る
autoが消滅して型名を書けと言われたりscope(exit)が消滅してtry-finallyを書けと言われたりしたら俺はDを投げる
67デフォルトの名無しさん:2013/01/27(日) 14:53:25.86
ラムダ要らない派とか今まで一人も出てきてないと思うけど
68デフォルトの名無しさん:2013/01/27(日) 14:57:55.37
>>61
ダークフレイムマスター
69デフォルトの名無しさん:2013/01/27(日) 19:38:44.30
complex型がいつ消えるかどきどきだわ・・・
70デフォルトの名無しさん:2013/01/27(日) 19:59:21.59
消えたらC99の複素数関数をABI互換性を保って呼ぶ方法が無くなるのか?
71デフォルトの名無しさん:2013/01/27(日) 20:00:11.78
std.complexじゃダメなの?
72デフォルトの名無しさん:2013/01/27(日) 20:06:07.70
C99のcomplexはFPUだかSSEだかのレジスタ渡しだろ?
ライブラリ定義はstructに詰めた状態だからスタック渡しになってしまわね?
73デフォルトの名無しさん:2013/01/27(日) 22:52:36.94
ライブラリ内でアセンブラで書いてあれば別にいいんじゃないの
あるいは何らかの最適化に通るのでもいいわけで
ABI互換性は困りそうだが
74デフォルトの名無しさん:2013/01/28(月) 06:15:55.98
D言語って、
int[100] a, b;
a[] += b[];
で勝手にSIMD演算とかいうのやってくれるんですか?
75デフォルトの名無しさん:2013/01/28(月) 07:13:31.71
>>74
http://www.kmonos.net/alang/d/simd.html
頑張ってくれる可能性はあるけどわりと限界もある、みたいな感じ
76デフォルトの名無しさん:2013/01/28(月) 11:06:58.13
ターゲット環境を明示してなければ勝手にそういうコードを吐くわけ無い
環境を特定するなら素直に core.simdで定義されている配列もどきを使うべし
77デフォルトの名無しさん:2013/01/28(月) 14:26:03.01
classのコンストラクタで定義した変数をメンバーにしちゃえる的な機能がほしいなぁ
多分害悪の元なんだろうけど
class hoge
{
this()
{
int a = 0 as public;
}
}
見たいにしたらhoge.aが使えるみたいなね!
thisが一個のとき限定でいいからさぁ・・・
78デフォルトの名無しさん:2013/01/28(月) 19:16:36.49
>>77
どんな意図の機能?
頑張れば既存の機能でやりたいことが解決できるかも
79デフォルトの名無しさん:2013/01/28(月) 19:44:42.31
黒魔術ツールopDispatchがあるからなあ
ただコンストラクタで書くならメンバでいいだろという気がするが
80デフォルトの名無しさん:2013/01/28(月) 19:52:33.02
現在のスコープから参照できるすべてのシンボルを列挙する__traitsが欲しい
あとそのシンボルが変数なのかモジュールなのかクラスなのか構造体なのか判別するのもついでに欲しい
81デフォルトの名無しさん:2013/01/28(月) 19:59:59.78
C++の特殊化でなら省力のために欲しいかな
mixin無ぇーし
82デフォルトの名無しさん:2013/01/28(月) 20:02:09.25
顧客が本当に必要だったもの:賢いIDE
83デフォルトの名無しさん:2013/01/28(月) 20:17:53.73
IDEとか重いだけだよ!
84デフォルトの名無しさん:2013/01/28(月) 21:31:09.49
DDTがeclipse4.2に入らないのが痛い
85デフォルトの名無しさん:2013/01/28(月) 23:29:27.58
軽いIDEには需要があるのか
86デフォルトの名無しさん:2013/01/28(月) 23:48:53.99
Sublime Textがそんな感じじゃない?
プロジェクト機能あるしD対応してるし
87デフォルトの名無しさん:2013/01/29(火) 04:08:55.24
言語仕様の追加まで対応出来る賢いIDEをだな
88デフォルトの名無しさん:2013/01/29(火) 12:34:31.13
IDEの触手の一端がウォルたんの脳みそに取り付いているだと…!?
89デフォルトの名無しさん:2013/01/29(火) 19:19:11.01
IDE(CUI)
90デフォルトの名無しさん:2013/01/29(火) 19:25:51.70
Integrated Drive Electronics
Integrated Development Environment
エンビロンメント?
91片山博文MZパンク ◆0lBZNi.Q7evd :2013/01/29(火) 23:58:06.70
>>90
エンヴァイロンメント。
電子辞書を買いましょうね。
92デフォルトの名無しさん:2013/01/30(水) 00:21:20.93
マクロまだー?
93デフォルトの名無しさん:2013/01/30(水) 00:21:34.89
カタカナ表記につっかかるのはナンセンスだと思うけど
94デフォルトの名無しさん:2013/01/30(水) 00:34:25.28
カタカナ表記としてもエンヴァイロンメント、エンバイロンメント以外に存在しない
95デフォルトの名無しさん:2013/01/30(水) 01:31:06.21
ディーゲンゴも大五郎も大して変わらんしな
96デフォルトの名無しさん:2013/01/30(水) 04:13:06.10
インバイロンメントさんが泣いてる
97デフォルトの名無しさん:2013/01/30(水) 04:32:45.97
わーにんぐ・わーにんぐ
98デフォルトの名無しさん:2013/01/30(水) 12:23:27.28
エンベロープメント
モーリメメント
ヤックデカルチュアメント
99デフォルトの名無しさん:2013/01/30(水) 19:39:48.11
DPasteのコンパイラが止まってるじゃないかクソッタレー!


import std.stdio;
void main() {

// ポインタの配列
int i = 42;
int*[1] src = [&i];

// スライスの代入
int*[1] dest = src[];

// srcとdestの内容が違う! (2.061以降)
writeln(src, " == ", dest);

}

これが2.061の破壊的変更だったら欣喜雀躍するんだが…
100デフォルトの名無しさん:2013/01/30(水) 20:08:25.15
>>99
githubの最新では直っているっぽい
101デフォルトの名無しさん:2013/01/30(水) 20:17:56.79
>>100
おおっと、さすがにこういうのはすぐ発見されるんですね
Thx
102デフォルトの名無しさん:2013/01/31(木) 01:43:11.46
override attribute is deprecated
ってどうすりゃいいの?
103デフォルトの名無しさん:2013/01/31(木) 01:46:40.11
ああ、withoutか
104デフォルトの名無しさん:2013/01/31(木) 14:35:15.40
void f(void delegate(int) dg) {}
f((i) { ... });
で推論できるなら
class C { this(int i){} }
C obj;
obj = new(10);
とかもできそうだよね
105デフォルトの名無しさん:2013/01/31(木) 18:53:52.42
構造体ならそれでいいかも知れんけど

それでもやっぱりきもい
106デフォルトの名無しさん:2013/01/31(木) 21:20:11.34
>>Error 42: Symbol Undefined _D6object9Exception6__ctorMFNaNbNfAyaAyakC6object9ThrowableZC9Exception (pure nothrow @safe Exception object.Exception.__ctor(immutable(char)[], immutable(char)[], uint, object.Throwable))

⇒pure nothrow @safe Exception object.Exception.__ctor(immutable(char)[], immutable(char)[], uint, object.Throwable)

なんですかこれ・・・

あるし

class Exception : Throwable
{
@safe pure nothrow this(string msg, string file = __FILE__, size_t line = __LINE__, Throwable next = null)
{
super(msg, file, line, next);
}

@safe pure nothrow this(string msg, Throwable next, string file = __FILE__, size_t line = __LINE__)
{
super(msg, file, line, next);
}
}
107デフォルトの名無しさん:2013/01/31(木) 21:44:53.91
2.061 に変えて自前のライブラリの再構築を忘れてたときに
そういうエラーを見た気がする
108デフォルトの名無しさん:2013/01/31(木) 22:01:57.58
>>107
VisualD使ってるんだけどそれ見てもしかしてと思ってエラーログ確認したら
使用するDMDが2.060のDMD環境指してた・・・

VisualStudioShell起動中に2.060と2.061をディレクトリリネームで切り替えた覚えがあるけど
勝手に設定まで追従しやがったのか・・・
109デフォルトの名無しさん:2013/02/01(金) 12:39:50.73
そういえば昔ErrorとExceptionがあったような気がしたんだけど、なんで片方なくなってるの?
110デフォルトの名無しさん:2013/02/01(金) 13:03:51.57
なくなってないよ
ぜんぜんちがうよ
111デフォルトの名無しさん:2013/02/01(金) 14:07:22.40
あれ?ほんとだ・・
公式のobjectのドキュメントに載ってなかったから無くなったのかと
112デフォルトの名無しさん:2013/02/02(土) 09:11:57.85
タプルリテラルってないの?
113デフォルトの名無しさん:2013/02/02(土) 09:27:53.05
ない
114デフォルトの名無しさん:2013/02/02(土) 11:58:43.31
入るとしたらどんな構文になるんだろうな
Pythonみたいにしたらえらいことになりそうだけど
115デフォルトの名無しさん:2013/02/02(土) 19:04:01.41
DDTでライブラリパスの追加とかlibファイルの追加ってどこでやるん?
116デフォルトの名無しさん:2013/02/02(土) 21:09:34.98
タプル構文か・・・fortranの配列を採用しようじゃないか (/ a, b /)
117デフォルトの名無しさん:2013/02/02(土) 21:19:05.80
(|a, b|)
(>a, b<)
(*a, b*)
(a, b)
(!a, b!)
{|a, b|}
118デフォルトの名無しさん:2013/02/02(土) 21:44:37.48
ここでついに<a, b>の出番が
119デフォルトの名無しさん:2013/02/02(土) 21:46:42.75
そういえばしばらく前の話だけど、タプルリテラルを
(a, b)みたいに書きたいからコンマ演算子廃止しようぜ、
という話がMLに出てたな。
120デフォルトの名無しさん:2013/02/02(土) 21:58:14.18
コンマ演算子って実際、使われてるの? Dに限らずCとかでも
121デフォルトの名無しさん:2013/02/02(土) 21:59:28.92
ラムダ式と組み合わせて使います
122デフォルトの名無しさん:2013/02/02(土) 22:01:33.27
マクロで時々見る。#define f(x) (sideeffect(x), x + 1) とか。書いたやつ死ねとしか思わんが
123デフォルトの名無しさん:2013/02/02(土) 22:05:53.34
for文の括弧内の各部に文を複数突っ込むときに使う気がする
124デフォルトの名無しさん:2013/02/02(土) 22:10:38.72
for (i = 0, j = 0; i < x && j < y; i++, j++)
みたいな
125デフォルトの名無しさん:2013/02/02(土) 22:10:59.88
forで複数突っ込みたいのは最後のとこだけだろうから、
++i, ++jの値がjではなく(i, j)のタプルになっても影響ないな
126デフォルトの名無しさん:2013/02/02(土) 22:23:24.90
forの最後でたまに使うから無くなると困る

他にも
while ((x = foo()) == y) { } を
while (x = foo(), x == y) { } と書く事もなくもない
127デフォルトの名無しさん:2013/02/02(土) 22:26:35.51
(x = foo(), x == y)の値がx == yではなく、(x, x == y)のタプルになって空ではないってことで無限ループしても
まあ影響ないな
128デフォルトの名無しさん:2013/02/02(土) 22:57:20.76
なんか人いるみたいだし、ちょっとスレに張り付いてみる。
いまのDでこれが気になる、とかある?
129デフォルトの名無しさん:2013/02/02(土) 23:11:33.70
構造体がテンプレートなら、内部の普通のメンバ関数も@safe pure nothrowを推論して欲しい。
void foo()(){...}ならできるけど
130デフォルトの名無しさん:2013/02/02(土) 23:18:34.88
>>129
あー、Jonathanが欲しいといってたやつか。std.rangeとかでいろいろ苦労しているから
実験パッチは作って試してみる予定。ただ、Fwdref問題がいっぱい出てくるかもしれないから
対応するかは半々だなあ。
131デフォルトの名無しさん:2013/02/02(土) 23:20:11.83
ちなみに、現状は「テンプレートの直下の関数」のみ推論が行われる。
void foo()() { ... } は
template foo() { void foo() { ... } }
の構文糖なので推論が効く、という仕組みになっている。
132デフォルトの名無しさん:2013/02/02(土) 23:22:47.25
個人的に連想配列の使い勝手が悪い
~で連結したいしmapとかで回したい
133デフォルトの名無しさん:2013/02/02(土) 23:30:05.36
>>132
~での連結はコンパイラ対応の範疇だな。
2つの結合したい連想配列に重複するキーがあるときどういう動作をすべきか、
という所が決まらないと駄目だと思う。

mapでまわすのはPhobosの範疇。しばらく前にそれっぽい話題がMLで出てた気が
するけど、特に話は進まずに終わったと思う…
そういう挙動を実現すること自体に問題はなさそうなので、enhanceをbugzillaに
投稿したら興味ある人が対応してくれるんじゃないかな。
134デフォルトの名無しさん:2013/02/02(土) 23:38:09.82
自分は最近コンパイラにかかりっきりなので、正直Phobosまで手を入れる余裕が無い。
他の人のPullReqをレビューするぐらいが精一杯です。
135デフォルトの名無しさん:2013/02/03(日) 00:07:51.37
rvalue refってどうなってるの?
136デフォルトの名無しさん:2013/02/03(日) 00:23:47.64
>>135
まだセマンティクスがはっきりしていない。現在テンプレート関数で使える
auto refは、厳密には右辺値参照とは違うものなので、これをそのまま
非テンプレート関数にもってくることは出来ない(構文的にも意味論的にも)

Andreiが http://d.puremagic.com/issues/show_bug.cgi?id=9238
Dにおける右辺値をrefで束縛した場合の挙動についてある程度書いてくれている。
興味深いのは、DはC++と違って参照型の変数が存在せず、関数の仮引数と戻り値
にのみrefが出現するため、右辺値を関数引数のrefで束縛しても「本質的には」
問題ない、という所かな。

とはいえ、実際には@systemな関数の内部で、ref引数からアドレスを取って
グローバル変数に束縛するなどのエスケープ問題が絡んでくるので、セマンティクスを
もっと詰めないと実装できない、というのが俺個人の現状認識。

結論:近いうちに状況が動く可能性は低い
137デフォルトの名無しさん:2013/02/03(日) 00:30:46.53
そろそろ抜けます。このスレは時々覗いているので
面白そうな質問あったらそれなりに答えるつもりです。では。
138デフォルトの名無しさん:2013/02/03(日) 00:49:20.05
139デフォルトの名無しさん:2013/02/03(日) 01:47:49.82
連想配列にclear()なりremoveAll()なりが無いのはもはや意味不明なレベル
140デフォルトの名無しさん:2013/02/03(日) 01:59:45.45
いや clear あるっしょ・・・あれ、どこに書いてあったっけ?
141デフォルトの名無しさん:2013/02/03(日) 02:15:36.29
dupも欲しいな
142デフォルトの名無しさん:2013/02/03(日) 02:23:16.25
>>140
object.destroyのaliasでclearがあるけどこれ呼ばれてるんじゃね?

>>141
dup使えたぞ
ドキュメント無さそうだがww
143デフォルトの名無しさん:2013/02/03(日) 02:39:50.10
マジダclearできた

替わりにこうしてた・・・
typeof(h) tmp;
tmp.swap(h);

で、h.dup.swap(h);がコンパイル通らなくて泣いてた
144デフォルトの名無しさん:2013/02/03(日) 02:41:09.83
あれ?よく考えたらh.dup.swap(h);意味ないじゃん。何やってんだ俺
145デフォルトの名無しさん:2013/02/03(日) 11:40:10.23
>>140-142
い、一体いつから…

ヒャアやっぱDはたまんねぇな!
146デフォルトの名無しさん:2013/02/03(日) 11:49:37.17
dupはあるんだった
何かと勘違いしたわ
147デフォルトの名無しさん:2013/02/03(日) 16:28:43.01
ポトペタなRAD今作ってるからGUI厨はちょっと待ってろ
148デフォルトの名無しさん:2013/02/03(日) 16:38:16.81
♪〜(・ε・。)ヒューー

boost licで頼む
149デフォルトの名無しさん:2013/02/03(日) 16:40:58.13
ポトペタとかは比較的どうでもいいんだ
まともに保守されてるだけでもぶっちぎりに優れたライブラリになれる
150デフォルトの名無しさん:2013/02/03(日) 18:32:28.27
逆に考えるんだ
唯一まともに保守されているから
公式のライブラリとして存在できていると考えるんだ
151デフォルトの名無しさん:2013/02/05(火) 13:23:14.36
UDAってCTFEした値も取ってこれるのか
無茶しやがって
152デフォルトの名無しさん:2013/02/05(火) 13:36:21.90
シンボルが欲しくなるな
153デフォルトの名無しさん:2013/02/05(火) 23:48:43.40
templateは要素がひとつで同名って条件でtemplate名称を省略できるって
公式のどこかで見た記憶があるんだけど下の例でクラスのAをtemplate名称なしで
使えちゃうのは合法?

template A(T){
 class A{}
 T s; ←A.Aとしてclassを参照するために邪魔になると思われるもの
}


auto x = new A!(int).A();
ではなく
auto x = new A!(int)();
として使用できてしまう。
154前々スレ(Part29)より:2013/02/05(火) 23:57:39.76
143 :営利利用に関するLR審議中@詳細は自治スレへ : 2012/04/08(日) 17:55:55.18
>>140-141
メンバ一つに限るっていう条件は 2.058 で外れたとかどこかで見たような

Eponymous Template っていうらしい
155デフォルトの名無しさん:2013/02/06(水) 00:06:06.75
Change Log見てもそれっぽいこと書いてないから怖いな・・
ありがとん
156デフォルトの名無しさん:2013/02/08(金) 01:45:26.22
Templateパラメータで渡された型のクラスインスタンスをalias thisする方法あります?

struct S(T){
T t;
alias t this;
}

T型が同じファイルに定義されている場合はコンパイル通るけど
別ファイルの場合Tのメンバを呼ぶコードがundefined identifierとなりました
157デフォルトの名無しさん:2013/02/08(金) 02:22:51.53
Dで作ったDLLをFreeLibraryするとホスト側が止まる(というか処理が戻ってこない)んですけど・・・
158デフォルトの名無しさん:2013/02/08(金) 10:53:08.11
>>156
通ると思うけど…
リンク漏れの Symbol Undefined じゃなくて?
159デフォルトの名無しさん:2013/02/08(金) 18:30:45.33
>>157
ソース無いからどうしようもないけど
静的呼び出ししたらどうなるよ?
160デフォルトの名無しさん:2013/02/08(金) 19:34:02.45
>>159
今やってみました。静的リンクだと問題なく呼び出せました。
目的は実行時に激しくDLLのロード/アンロードをすることなのでLoadLibrary/FreeLibraryが必要だと思ってます。
DLL側、使用側のソースです→http://dpaste.dzfl.pl/b47c098b
試しにDMDで作ったものでない(たとえば、SDLの)DLLを読み込ませてみましたが、そっちでは問題なくLoad/Freeできました

なんかDLLの作り方間違えてるのかな・・
161デフォルトの名無しさん:2013/02/08(金) 21:44:06.14
>>160
横レス
なぜか最後のwriteln の中で死んでるっぽい
# デバッガが使えればみんな悲しまずに済むのに・・・!

試しにメッセージボックスに変えてみたらイケた
import core.sys.windows.windows;
MessageBoxA(null, "4 end".ptr, "message".ptr, 0);
162デフォルトの名無しさん:2013/02/08(金) 22:15:23.76
core.runtimeのloadLibrary/unloadlibraryを呼んだらどうなる?
なんかGC関係の追加処理してそうだけど
163デフォルトの名無しさん:2013/02/08(金) 22:22:33.15
呼び出し規約
164デフォルトの名無しさん:2013/02/08(金) 22:31:37.13
>>163 よく読め
>>160はDLL内の関数を呼んではいないぞ
165デフォルトの名無しさん:2013/02/08(金) 22:40:40.32
>>164
落ちる場所のアセンブリよく読め
スタック巻き戻してretするとこで落ちてる
DLL内の関数の呼び出し規約とは言ってない
166160:2013/02/08(金) 23:27:18.56
呼び出し規約と聞いてよくわからないままいろいろ試しました。
alias extern(D) void* function(in char*) LoadLibrary_t;
alias extern(D) uint function(void*) FreeLibrary_t;
void main() {
  writeln("1 load");
  auto p = (cast(LoadLibrary_t)&LoadLibraryA)("plugin.dll");
  writeln("2 ", (p is null) ? "error" : "ok");
  writeln("3 free");
  (cast(FreeLibrary_t)&FreeLibrary)(p);
  writeln("4 end");
}
なんかこんな利用側コードで結局エラーが出なくなりました。
なんでDの呼び出し規約で正しい動きをするのか
まったくわけわかんないんですがこれでいいんでしょうか・・・
167160:2013/02/08(金) 23:38:46.24
動いたように見えただけでなんも動いてなかった・・・適当なこと書いてごめんなさい
168デフォルトの名無しさん:2013/02/09(土) 00:09:10.44
http://d.puremagic.com/issues/show_bug.cgi?id=1550
D DLLs close standard input/output streams when unloading
169デフォルトの名無しさん:2013/02/09(土) 00:30:31.25
2007-10-07

(´・ω・`)
170デフォルトの名無しさん:2013/02/09(土) 00:33:55.29
マジか。つまりDMDのDLL作成機能に実用性なし!
通りでD言語で作られたライブラリが一切DLL化されないわけだぜ
171デフォルトの名無しさん:2013/02/09(土) 00:47:09.49
なあ、手元で>>160を動かしたら、何の問題もなく動いたんだが……
172デフォルトの名無しさん:2013/02/09(土) 00:47:13.47
いや
173デフォルトの名無しさん:2013/02/09(土) 00:57:20.66
マジマジ。ちゃんと全部出る。一行も変更してない。

1 load
2 ok
3 free
4 end
174デフォルトの名無しさん:2013/02/09(土) 01:10:41.83
kankyouwo
175デフォルトの名無しさん:2013/02/09(土) 01:11:38.05
xp
176デフォルトの名無しさん:2013/02/09(土) 01:18:43.24
7 dame
177デフォルトの名無しさん:2013/02/09(土) 08:12:52.75
mamamajika
178デフォルトの名無しさん:2013/02/09(土) 16:31:15.36
>>156のわかった
alias thisするメンバがprivateだとundefined identifierになるぽい
これって動作としては正しい?
privateにしないと外からalias this対象がメンバとして触れちゃうから問題な気が・・

http://ideone.com/kVVl02
179デフォルトの名無しさん:2013/02/09(土) 17:03:54.30
>>178
逆に private な alias this はどんな動作になるべきだと考えてるの?
180デフォルトの名無しさん:2013/02/09(土) 17:28:02.48
>>178
エスパーだが、こういうことがしたいのではないか
struct S
{
private:
T x;
public:
@property T getX() { return x; }
alias getX this;
}
181デフォルトの名無しさん:2013/02/09(土) 17:44:02.76
>>180
YES!
182デフォルトの名無しさん:2013/02/11(月) 22:29:44.30
あれ、clear って deprecated になってるじゃん
destroy の方が新しいのか
逆だと思ってたわ
183デフォルトの名無しさん:2013/02/11(月) 23:08:46.70
デデデデストローイ
184デフォルトの名無しさん:2013/02/11(月) 23:22:19.46
これって破壊的変更なんですかね
185デフォルトの名無しさん:2013/02/12(火) 13:42:22.61
>>171
もしかしてDMD以外のコンパイラを使ってないか?
186デフォルトの名無しさん:2013/02/12(火) 14:05:39.37
>>185
俺もxpでdmdだが問題出ない
load〜freeを100回ループさせても正常
187デフォルトの名無しさん:2013/02/12(火) 14:22:30.57
未だに修正されない理由はこれか!
188デフォルトの名無しさん:2013/02/12(火) 14:39:03.09
>>168にある回避策を試すといいかも
副作用出るかは知らないが
189デフォルトの名無しさん:2013/02/13(水) 19:38:22.65
確かに Win7/64 だと >>168に引っかかってるぽいけど
同じバイナリが WinXP/32 だと普通に動くな
190デフォルトの名無しさん:2013/02/15(金) 02:52:24.19
同一の領域を指すレンジの距離ってどうにか簡単に得られませんか?
191デフォルトの名無しさん:2013/02/15(金) 20:19:41.44
1.まず説明する能力を鍛えます
192デフォルトの名無しさん:2013/02/15(金) 20:25:52.02
auto range1 = [0, 1, 2, 3];
auto range2 = range1.find(2);
assert(distance(range1, range2) == 2);
のdistanceみたいな関数ないですか?
193デフォルトの名無しさん:2013/02/15(金) 20:53:18.04
import std.algorithm;
range1.countUntil(range2);
194デフォルトの名無しさん:2013/02/15(金) 20:56:53.49
間違えた
auto range1 = [0, 1, 2, 3];
auto range2 = range1.find(2);
auto range3 = range1.find(3);
assert(distance(range2, range3) == 1);
こっちのほうです。
195デフォルトの名無しさん:2013/02/15(金) 21:01:53.65
indexOfで場所を取得して差の絶対値を取れば?
196デフォルトの名無しさん:2013/02/16(土) 08:23:22.80
ややこしい型名のメンバーをautoで書きたい(;;.;;)
197デフォルトの名無しさん:2013/02/16(土) 10:42:54.48
つ (T)
198デフォルトの名無しさん:2013/02/16(土) 11:59:49.24
つalias
199デフォルトの名無しさん:2013/02/16(土) 18:11:00.11
optlink のソースが公開されてるっぽい
アセンブリ 70% とか書いてあるのを見て俺はおまいらに託すことに決めたぜ
https://github.com/DigitalMars/optlink
200デフォルトの名無しさん:2013/02/17(日) 20:46:00.37
たまに実行時定数がほしい
201デフォルトの名無しさん:2013/02/18(月) 12:30:12.77
github ソースから最新を取ってきたら
alias INT = int; の構文がさっそく死んだ…?
202デフォルトの名無しさん:2013/02/18(月) 14:29:36.52
http://wiki.dlang.org
公式wikiがいい感じに作られている
次スレのテンプレに入れておこう
203デフォルトの名無しさん:2013/02/18(月) 18:15:17.15
2.062
204デフォルトの名無しさん:2013/02/18(月) 18:26:51.04
>>201
2.062 では消されていないようだ
てかgithubのブランチが分かれてよくわからなくなってるんだが
205デフォルトの名無しさん:2013/02/18(月) 20:35:50.72
The D Programming Language Conference 2013
http://dconf.org/
206デフォルトの名無しさん:2013/02/18(月) 22:38:15.93
>>204
masterが最新だと思っていたら 2.062 よりはるかに古かったぜ…
207デフォルトの名無しさん:2013/02/18(月) 22:49:24.28
gitつかいにくw
208デフォルトの名無しさん:2013/02/18(月) 23:29:35.25
opAssignが使えなくなった…
代替法あるん?

class C{
C opAssign(C c){
return this;
}
}
void main(){
C c = new C;
C d;
d = c;
}

Error: class temp.C identity assignment operator overload is illegal
209デフォルトの名無しさん:2013/02/18(月) 23:52:55.23
同じ型のopAssignはもともと使えんぞ
210デフォルトの名無しさん:2013/02/19(火) 00:07:59.38
まじっか
今までコンパイル通ってたから気付かなかった
じゃあみんなディープコピーしたい場合どうしてるん
211デフォルトの名無しさん:2013/02/19(火) 00:26:29.64
ポリモが不要なら struct
必要なら mixinとか alias thisで誤魔化す
212デフォルトの名無しさん:2013/02/19(火) 00:33:26.34
ウソです
ほんとは cloneとかdeepCopy とかいう関数を地道に呼んでます
213デフォルトの名無しさん:2013/02/19(火) 01:21:16.89
そ、そう…がんばる
214デフォルトの名無しさん:2013/02/19(火) 19:40:03.01
関数の引数の型で「.lengthが定義されている配列であればなんでも」という記法ってありましたっけ
215デフォルトの名無しさん:2013/02/19(火) 21:24:53.37
static if (is(typeof(T.init.length)))
とかそういうこと?
216デフォルトの名無しさん:2013/02/20(水) 00:16:31.82
>>208
classは参照型のセマンティクスを持っているので、自身と同じ型を取るopAssignは定義できない。
一方structは値型のセマンティクスなので、自身と同じ型を取るopAssignでも定義可能。
217デフォルトの名無しさん:2013/02/20(水) 00:22:32.50
>>153
>templateは要素がひとつで同名って条件でtemplate名称を省略できるって
>公式のどこかで見た記憶があるんだけど下の例でクラスのAをtemplate名称なしで
>使えちゃうのは合法?
>
>template A(T){
> class A{}
> T s; ←A.Aとしてclassを参照するために邪魔になると思われるもの
>}

この用法は合法(TDPLに上の様な場合「メンバsはテンプレートAの外側からは
アクセスできなくなる」と書かれている)。またstd.traitsのテンプレートの多くは
この仕組みを使って細かい実装用のテンプレートを内側に隠している。
218デフォルトの名無しさん:2013/02/20(水) 00:57:28.94
ありがとうメーン
219デフォルトの名無しさん:2013/02/20(水) 15:03:21.31
githubから最新ソース使ってる人どれくらいいるかな

・新機能はいらないけどバグ修正はほしい -> staging
・PullRequestを出したい -> master を取得して staging/master/hogeFeatureのどれかへ
・最新機能を試したい -> master を取得して hogeFeatureを各自でマージ
こういう認識で合ってる?
masterとstaging のどちらが新しいと一概に言えないっぽいところが悩ましい

http://wiki.dlang.org/Development_and_Release_Process
誰か訳してくれないかな〜(チラッ
220デフォルトの名無しさん:2013/02/20(水) 19:25:56.86
>>214
「arr.lengthとarr[i]が定義されてるようなもの」ってことなら、
std.rangeのhasLengthとisRandomAccessRange使えばいいよ
221デフォルトの名無しさん:2013/02/20(水) 23:33:05.73
> http://wiki.dlang.org/Development_and_Release_Process

残念だけど、今のところそこに書かれていることは
「こういうプロセスで開発したら良いんじゃない?」程度で
実際にそれに則って開発がされているわけではない。

stagingブランチは2.060のReleaseから作られているが、現状では
「ベータ版が出てる最中に、Release用のRegression fixとかを
masterとは別に積み上げるためのブランチ」程度の意味しかない。
222デフォルトの名無しさん:2013/02/20(水) 23:36:28.91
>>220
ありがとうございます。
223デフォルトの名無しさん:2013/02/21(木) 13:16:57.80
>>221
そうか。ありがとう
224デフォルトの名無しさん:2013/02/22(金) 13:08:56.76
2/22 に 222get
ズサ━━━━⊂(゚Д゚⊂⌒`つ≡≡≡━━━━!!
225デフォルトの名無しさん:2013/02/22(金) 18:49:57.59
惜しい・・・。君は実に惜しい逸材だったよ。
226デフォルトの名無しさん:2013/02/22(金) 19:04:12.44
もうすぐ22:22ですね
227デフォルトの名無しさん:2013/02/23(土) 00:07:53.66
>>130
>>>129
>実験パッチは作って試してみる予定。ただ、Fwdref問題がいっぱい出てくるかもしれないから
>対応するかは半々だなあ。

PullReq出して、マージされました。
https://github.com/D-Programming-Language/dmd/pull/1676

大きな問題が出なければ、2.063で使えるようになると思います。
228デフォルトの名無しさん:2013/02/23(土) 00:40:11.25
2/22 22:22 に 222get
ズサ━━━━⊂(゚Д゚⊂⌒`つ≡≡≡━━━━!!
229デフォルトの名無しさん:2013/02/23(土) 00:40:36.58
>>227
うおおお!
ありがとうございます!
230デフォルトの名無しさん:2013/02/23(土) 00:47:00.25
>>228
localeおかしいぞ
231デフォルトの名無しさん:2013/02/23(土) 07:28:58.42
>227
すげえええ
内部でrange関数使ってるからnothrowなのにnothrowじゃない日々ともおさらばだ!
232デフォルトの名無しさん:2013/02/23(土) 14:16:00.62
隠していても俺がウスノロだってバレてしまうのかよッ
233デフォルトの名無しさん:2013/02/23(土) 19:12:31.79
not ウスノロ
you're ウスベニウンコ
234片山博文MZパンク ◆0lBZNi.Q7evd :2013/02/24(日) 00:07:31.36
COBOLからD言語への変換って面白そうだね
235デフォルトの名無しさん:2013/02/24(日) 00:13:17.53
実用性ゼロの最悪の選択だ
236デフォルトの名無しさん:2013/02/24(日) 03:46:42.64
rubyをDに変換して、さらにJavaで動くように変換したら凄いことになりそう
237デフォルトの名無しさん:2013/02/25(月) 15:51:16.98
>>235
バカタ山に構うな
238デフォルトの名無しさん:2013/02/25(月) 16:46:43.58
遠隔操作で片山が逮捕されたと聞いたとき、最初に思い浮かんだ片山は(ry
239デフォルトの名無しさん:2013/02/25(月) 17:58:44.93
遠隔操作で片山が逮捕されたと聞いたとき、最初に思い浮かんだ片山は(ry
240デフォルトの名無しさん:2013/02/25(月) 18:44:21.72
なぜDじゃなくてC#なんて比較的ショボい言語を使ったんだ
241デフォルトの名無しさん:2013/02/28(木) 17:44:20.81
Dを使った方はまだ極秘で捜査を進めている段階で情報を出すことが出来ない
242デフォルトの名無しさん:2013/02/28(木) 19:28:26.70
でもC#のref/outとかプロパティとかはたまに欲しくなるんだ
243デフォルトの名無しさん:2013/02/28(木) 22:04:25.28
>>242
Dのref/outやプロパティでは満足できない用途ってこと?
244デフォルトの名無しさん:2013/02/28(木) 22:47:58.34
bool flag { get; set; }みたいに1行で書きたいし
呼び出し側にref/outつけたい
というような細かいことだったりするんだごめんよ
245デフォルトの名無しさん:2013/02/28(木) 23:38:19.90
>>244
なるほど
プロパティは糖衣構文(かコンパイル時関数実行)で対応できそうだけど
呼び出し側のref付は内部構造に関わりそうね
246デフォルトの名無しさん:2013/03/01(金) 00:51:37.24
D言語でANSI Cコンパイラ実装してみた
文字列処理関数のおかげでレキシカルアナライザの構築がスゲー楽だった
たぶん全く需要無さそうだけど。
247デフォルトの名無しさん:2013/03/01(金) 01:22:28.23
手習いならgithubにでも置いてwikiなりなんなりからリンク張ればいいじゃない
248片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/01(金) 18:59:36.14
>>246
欲しい! githubにでも公開してくだされ
249デフォルトの名無しさん:2013/03/01(金) 23:02:34.42
>>248
「見たい」ではなく「欲しい」な時点で程度が伺える。
250デフォルトの名無しさん:2013/03/01(金) 23:58:41.04
>>247
>>248
コード整理して人に見せられるレベルにしてから上げます!
ちなみに最適化処理とか一切無いです。。。。。。
251デフォルトの名無しさん:2013/03/02(土) 00:18:03.99
それ以上改造したりメンテしたりする予定がないならさっさと公開しちゃいなよYOU
その上で要望があるならまた考えればいい
252デフォルトの名無しさん:2013/03/06(水) 00:17:36.99
switch文に0..3みたいにレンジ指定が出来たような気がしたんだけど出来ないな
俺の気のせいかな
253デフォルトの名無しさん:2013/03/06(水) 00:55:46.43
case 300: .. case 400: みたいなのは出来るけど
範囲が256より大きいとエラーになる仕様
254デフォルトの名無しさん:2013/03/06(水) 01:08:15.20
8ビットレンジって・・・仕様じゃ無くてバグの領域じゃないのw
255デフォルトの名無しさん:2013/03/06(水) 01:11:28.73
それはジャンプテーブルの関係じゃ?
256デフォルトの名無しさん:2013/03/06(水) 01:15:40.26
257デフォルトの名無しさん:2013/03/06(水) 10:31:08.62
そうか
D使うのやめるわ
258デフォルトの名無しさん:2013/03/06(水) 13:20:51.89
うぉるたん "I worship the Dark Arts."
259デフォルトの名無しさん:2013/03/09(土) 15:24:27.47
Dコンパイラの実装に関する手引きみたいな記事ってありませんか?
実装が簡単とか書いてあったので気になったんですが
260デフォルトの名無しさん:2013/03/09(土) 15:25:54.84
そんな時代もありました
261デフォルトの名無しさん:2013/03/09(土) 15:35:55.61
もう簡単とはとても言えんよな…
ああ、うん、C++11実装するよりは簡単じゃね?ぐらい
262デフォルトの名無しさん:2013/03/09(土) 17:35:51.31
C++コンパイラの実装がエベレスト登頂するくらいだとしたら
オリュンポス山登頂する程度の難易度の低さだと思う
263デフォルトの名無しさん:2013/03/09(土) 19:33:30.32
単方向リンクリストはstd.containerにありますが、
双方向リンクリストがないのは何か理由があるのでしょうか?
よく使うので、あると便利だと思ったのですが。
264デフォルトの名無しさん:2013/03/09(土) 19:39:08.79
なくても間に合うから
265263:2013/03/09(土) 20:48:36.94
必要なら自分で作れっていうことか・・・
266263:2013/03/09(土) 21:13:19.31
あ、2.060でstd.containerにDListが追加されてますね。
267デフォルトの名無しさん:2013/03/11(月) 00:45:06.08
>>262
登山口にたどり着けないんですがそれは
268デフォルトの名無しさん:2013/03/11(月) 01:18:57.99
http://en.wikipedia.org/wiki/Olympus_Mons
This article is about the volcano on Mars.
269片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/11(月) 04:30:27.31
DのLLVM実装が実現しないかな?
270デフォルトの名無しさん:2013/03/11(月) 12:19:04.95
LDC
271デフォルトの名無しさん:2013/03/13(水) 22:24:04.18
dmdとかrdmdにlibを渡したいんだけどsc.iniじゃなくて
-Iオプションみたいに引数でディレクトリパス渡す方法ある?
引数としてlibのパスを直接渡しても
pragma(lib, "xx")があるとリンクされないみたいなんだ
272デフォルトの名無しさん:2013/03/13(水) 23:15:54.33
環境変数をセットするしかないね
273デフォルトの名無しさん:2013/03/14(木) 14:02:54.29
普通にdmdに.libを渡せばリンクしてくれるけどディレクトリだとどうかな
-Lでリンカのオプション渡せるから使ってるリンカのオプション調べれば出来るんじゃね
274デフォルトの名無しさん:2013/03/14(木) 14:22:32.51
VCのリンカなら「/LIBPATH」
GCCのリンカなら「-L」
でいけるようだ
残念ながらoptlinkには無い
275デフォルトの名無しさん:2013/03/14(木) 15:27:51.86
>>273
そんなふうに考えていた時期が俺にもありました

今は バージョンが上がったらライブラリもビルドし直すからと割りきって
windows\lib に直に放り込むことにしている
276271:2013/03/14(木) 20:25:40.04
オプションでどうにかなるものじゃないのか
pragma削る方向で対応してみるよ
答えてくれたみんなありがとさん
277デフォルトの名無しさん:2013/03/18(月) 00:17:04.17
GCC4.8のRCが出たとか見かけたけど
GDCが組み込まれるという噂はどうなったのかしらん
278デフォルトの名無しさん:2013/03/18(月) 15:24:19.72
立ち消えくさいな
DMD2G -デファクトスタンダード- として大ヒットするという俺の読みが
279片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/19(火) 18:23:57.38
DでANSI Cコンパイラmurder?
280デフォルトの名無しさん:2013/03/19(火) 19:40:24.15
うっさい
281デフォルトの名無しさん:2013/03/21(木) 01:54:24.66
Win64でdmdを32で使ってるんだけどOPTLINKでコケる現象遭遇してる人いない?
00428DA3見かけたことある人は多いと思うんだが
-gcがまずいのかな…しかしrdmdもoptlinkがコケて動かないし
282デフォルトの名無しさん:2013/03/21(木) 01:56:04.09
64bitWin7で使ってるけど全然ない
283デフォルトの名無しさん:2013/03/21(木) 03:14:17.14
-g をのけると動くのはよくある。デカすぎる場合かな
lib に分割すると動いたりする
284デフォルトの名無しさん:2013/03/23(土) 10:26:04.58
最近のD言語はこんななってるのか…
こんなの開けるくらい有名になったんだなD言語のこれからに期待
http://www.youtube.com/watch?v=50uS7nbgq2E
285デフォルトの名無しさん:2013/03/23(土) 13:19:54.42
ttp://dlanguage-z.com/aboutus.html
なにこれ、シャレにならん 特別工作部隊を要請せねば
286デフォルトの名無しさん:2013/03/23(土) 15:40:57.06
>>284-285
AV撮影会かなんかですか?
287デフォルトの名無しさん:2013/03/23(土) 15:50:52.35
Tokyo Auto Salonと書いてあるだろーが
288デフォルトの名無しさん:2013/03/23(土) 19:01:14.42
東京オートサロンて場所でやったD言語のキャンペーンじゃないの?
289デフォルトの名無しさん:2013/03/23(土) 23:39:17.54
128bit整数型のcentって何の略語?
290デフォルトの名無しさん:2013/03/23(土) 23:42:10.95
ラテン語の百、cent
291デフォルトの名無しさん:2013/03/24(日) 12:27:56.97
>>285
サーキット走行会 走郎にわろた。そうろうて
292デフォルトの名無しさん:2013/03/24(日) 23:58:09.06
>>289
なるほど
じゃあ256bit整数ができたらducentになるのか
293デフォルトの名無しさん:2013/03/25(月) 00:47:44.81
なんで100で128bit整数型なの
28はどこいったの
294デフォルトの名無しさん:2013/03/25(月) 01:26:17.78
D言語マスコットの口の中に
295デフォルトの名無しさん:2013/03/25(月) 02:02:05.97
100bit整数という変態型もD言語ならあるいは
296デフォルトの名無しさん:2013/03/25(月) 02:03:21.69
1k=1024と同じ理屈
297デフォルトの名無しさん:2013/03/25(月) 02:21:49.38
1024は1Kiじゃね
298デフォルトの名無しさん:2013/03/25(月) 06:36:13.21
>>297
正しくはそうなんだが
過去に1k=1024として使ってたせいで今も慣例としてそう書かれる場面は多いんだから
その辺も含めて同じというか似たような理屈ってことでしょ
299デフォルトの名無しさん:2013/03/25(月) 07:22:00.44
誤差2.4%と28%じゃえらい違いだと思うけどw
300デフォルトの名無しさん:2013/03/25(月) 07:30:53.55
こまけぇこたぁいいんだよ
301デフォルトの名無しさん:2013/03/25(月) 09:20:43.90
>>298
1024の時はkでなくKと書く
302デフォルトの名無しさん:2013/03/25(月) 21:41:22.23
kとKの使い分けは実際はかなりいい加減だよ
本当に1024にしたいならKi使った方がいい
303デフォルトの名無しさん:2013/03/25(月) 21:52:08.03
そういう話かね
304デフォルトの名無しさん:2013/03/25(月) 22:00:00.85
kとKの使い分けは規則として存在するわけじゃないからね
あくまで慣例なので実際どこまで正確に使われているかは怪しい

Kiは1024以外で使われることは無い
305デフォルトの名無しさん:2013/03/25(月) 22:57:28.27
>>303がいや、今そういう話じゃないんじゃねって指摘してるのに
なんでさらに同じ方向にぶっ込んでくるんだw
306デフォルトの名無しさん:2013/03/25(月) 23:04:07.86
そういう話かね
307デフォルトの名無しさん:2013/03/25(月) 23:11:13.90
な、なんだって!?
308デフォルトの名無しさん:2013/03/26(火) 00:08:33.92
もっとD言語の話をしようぜ
コンパイル時うひょー
309デフォルトの名無しさん:2013/03/26(火) 21:24:36.45
TDPLクルー
ここで言うのも何だが監修のお二人乙です
310デフォルトの名無しさん:2013/03/26(火) 21:36:48.99
うひょーでもぎひょーでもなくしょえーときたか
311デフォルトの名無しさん:2013/03/26(火) 21:41:47.38
そんなプロジェクトが進行してたのか
D友のTDPL訳が面白かったから読んでみたかったんだよな
312デフォルトの名無しさん:2013/03/27(水) 00:01:17.65
え?日本語版出るってこと?
313デフォルトの名無しさん:2013/03/27(水) 00:09:03.06
314デフォルトの名無しさん:2013/03/27(水) 01:19:20.60
あれ?表紙にマスコットちゃん居ないな・・・
315デフォルトの名無しさん:2013/03/27(水) 09:45:23.75
ギャラが高額すぎて頼めなかったんだよ
316デフォルトの名無しさん:2013/03/27(水) 10:02:04.50
俺の脳内ダービー予想ではこんなのだったが

○2.063
◎DConf2013
△Bugzilla Issue 10,000

 TDPL 日本語訳 ← 出走予定なし
317デフォルトの名無しさん:2013/03/27(水) 11:12:49.40
内容についてが見当たらないのだがTDPLの日本語訳なんかな
D言語パーフェクトガイドみたいな初心者向けの新規本だったりして
318デフォルトの名無しさん:2013/03/27(水) 11:21:41.51
翻訳+α 本家の古くなった内容は修正済み

詳しくはこの辺りのツイート参照
ttps://twitter.com/repeatedly/status/316563703921254400
319デフォルトの名無しさん:2013/03/27(水) 11:52:45.34
なるほど
しかも監修はコミッタ2人か
TDPL買ったはいいけど英語苦手で半分も読めなかったので助かる
320デフォルトの名無しさん:2013/03/27(水) 19:22:19.47
9rnsr氏とこの人って考えうる限り最高クラスのメンバーだな

いやD関係で知ってる日本人3〜4人くらいしかいないけど…
321デフォルトの名無しさん:2013/03/27(水) 20:37:48.98
>>314
こんな表紙だったら俺には買えないところだった…
http://www.dotup.org/uploda/www.dotup.org4076950.png
322デフォルトの名無しさん:2013/03/27(水) 23:17:22.68
>>319
読めなかったけど黒くてかっこいいのだったし表紙デザインもなんだかモダンな感じだったからうちでは飾ってるよ
何で日本語版は白なんだろう表紙もDじゃなくてCって書いてあるし!
323デフォルトの名無しさん:2013/03/27(水) 23:20:25.11
確かにCがあっち向いてるように見えるわ
324デフォルトの名無しさん:2013/03/27(水) 23:22:11.36
平積み狙いのホコリ対策?
325デフォルトの名無しさん:2013/03/28(木) 02:14:30.10
さーてがんばってTreadmillGC書くぞー
326デフォルトの名無しさん:2013/03/28(木) 02:18:34.02
新TDPL稲葉さんは監修してないのか
327デフォルトの名無しさん:2013/03/29(金) 21:19:19.19
else static ifのインデントが深くなりすぎてつらい
328デフォルトの名無しさん:2013/03/29(金) 23:33:03.00
アクションゲームどうなった?
329デフォルトの名無しさん:2013/03/29(金) 23:52:57.36
>>328
作者が発表しないと情報を知る由もないね。
330デフォルトの名無しさん:2013/03/30(土) 02:12:22.31
ttp://wiki.dlang.org/DIP32

tupleのsyntaxについての提案
331デフォルトの名無しさん:2013/03/30(土) 02:39:48.51
>>330
Perlを思い出すのは何故だ
332デフォルトの名無しさん:2013/03/30(土) 03:07:40.56
これが実装されたら関数はひとつの引数を受け取り一つを値を返すを地でいける!
{} proc({}) {
  ...
}
ついでに仮引数の宣言の丸括弧取れるんじゃね?
333デフォルトの名無しさん:2013/03/30(土) 03:09:33.15
>>331
パッと見はハッシュリファレンスのほうに見えるけど
{}を()にするとかなりPerlのリストっぽい書き方になるね
334デフォルトの名無しさん:2013/03/30(土) 07:53:39.90
>>332
構文解析器が泣いてお詫びするレベル
335デフォルトの名無しさん:2013/03/30(土) 08:52:45.51
本がでると思ったら新しい構文を追加していくぅ
336デフォルトの名無しさん:2013/03/30(土) 10:43:41.01
教典派と実利派に分かれて相争う時代へ
337デフォルトの名無しさん:2013/03/30(土) 10:50:28.32
本が出そうになったら破壊的変更いっぱいすぅ
338デフォルトの名無しさん:2013/03/30(土) 10:53:12.48
内部的には構造体なのかな
339デフォルトの名無しさん:2013/03/30(土) 11:52:07.49
DのGCはいつまでマーク&スイープなんて旧石器時代の代物を使い続けるつもりなんだ
いいかげん世代別コピーGCかTreadmillGC実装しろよウォルター
340デフォルトの名無しさん:2013/03/30(土) 13:45:38.43
旧型が新型との絶望的なスペック差をぶっちぎり勝利するところから得られるカタルシスもあるだろう
341デフォルトの名無しさん:2013/03/30(土) 15:12:07.61
最近のdmdのGCはめったにメモリ構造破壊したりしないぜ
マジ進んでる
342デフォルトの名無しさん:2013/03/30(土) 15:19:14.01
めったにってなんだよ
安全第一保守的GCだろ
開放漏れならわかるけど
343デフォルトの名無しさん:2013/03/30(土) 15:44:49.99
バグ数4桁は伊達じゃない
344デフォルトの名無しさん:2013/03/30(土) 16:54:04.78
今のdmdってそんなにバグあんの?w
345デフォルトの名無しさん:2013/03/30(土) 18:34:43.86
>>338
スタックフレームとの兼ね合いが大変そうだ
346デフォルトの名無しさん:2013/03/30(土) 19:01:28.02
newして配列に入れておいたら知らないうちに破壊されてることとかあったなぁ
newしたら即GC.addRoot()で解決したから大した問題じゃない
347デフォルトの名無しさん:2013/03/30(土) 19:10:55.91
GCちゃん。。。
348デフォルトの名無しさん:2013/03/30(土) 20:17:29.04
某コミッタの人も
「最近のDはいきなりメモリ破壊しないから
デバッグマジ簡単wwwマジwww神言語www(大意)」
って言ってたな
349デフォルトの名無しさん:2013/03/31(日) 02:55:57.89
配列のreplaceAllみたいなのないですか?
350デフォルトの名無しさん:2013/03/31(日) 23:53:55.19
module a;
void call(alias fun)(){ fun(); }

module b;
private void foo();

call!foo(); // なぜ呼べん
351デフォルトの名無しさん:2013/04/01(月) 01:49:40.75
アッ!?
alias=ってもう消えたの
352デフォルトの名無しさん:2013/04/01(月) 02:02:51.17
alias this = の構文を変えるとかいう話はあるけど
多分そういう話じゃなくて master に 2.062までの反映漏れがあるという問題だろうな
353デフォルトの名無しさん:2013/04/01(月) 23:13:59.97
D言語パーフェクトガイド日本語版第2版近日発売予定
354デフォルトの名無しさん:2013/04/01(月) 23:15:36.15
パーフェクト第二版・・・この感覚
355デフォルトの名無しさん:2013/04/02(火) 00:20:20.31
その感覚がD言語
356デフォルトの名無しさん:2013/04/02(火) 00:21:33.62
>>350
public import
357デフォルトの名無しさん:2013/04/02(火) 15:07:01.99
DConf 2013 canceled; hoping for DConf 2014
http://comments.gmane.org/gmane.comp.lang.d.announce/13317

Noooooooooooooooooooooooooooooo!!
358デフォルトの名無しさん:2013/04/02(火) 19:23:02.78
嘘だと言ってよandrei!
359デフォルトの名無しさん:2013/04/02(火) 20:09:48.68
びびらせんなwwwww
andreiタソおちゃめだな
360デフォルトの名無しさん:2013/04/06(土) 02:16:27.72
お久しぶりです。2スレぐらい前にメタセコのローダ書いてた者です。
>>328 すんません。全然すすんでなかったり。。。f(^_^;)
githubに場所借りたのでお知らせします。
あと手持ちのリソースも晒しときますので宣伝させてください。
//github.com/garlic-flavor

o /mqo_loader
UDAで頂点情報を定義するようにしました。

o /KLisp
Lisp-Like言語実装補助。Runtime/CTFEコンパチ!
Yane-Lisp互換の実装がサンプルにあります。

o /amm
Automatic Makefile Maker
D言語のソースからMakefileを自動生成します。

なまあたたかくよろしく!m(_ _)m
361デフォルトの名無しさん:2013/04/06(土) 02:41:45.02
gj!!!!!
362デフォルトの名無しさん:2013/04/06(土) 02:53:41.04
Dさんが健在だ乙
363デフォルトの名無しさん:2013/04/06(土) 20:48:12.93
AGK / DarkBASIC / Basic4GL / 99BASIC 2013 Part.1
http://kohada.2ch.net/test/read.cgi/pcnews/1365242417/l50

世界中でダントツの人気!各BASICの特徴

・ AGK App Game Kit(http://www.appgamekit.com/
 海外で主流のマルチプラットフォームの開発環境。
 C言語風味の記述が特徴で、中身はDarkBASIC。
 Ver1.088で3Dインターフェイス対応。

・ DarkBASIC(http://darkbasic.thegamecreators.com/
 VisualBASIC以前の旧式マイクロソフトBASICの進化形。
 DirectXをサポート、商用アプリ作成可能。
 C言語にはない強力な文字列操作、複雑な記述が可能。

・ Basic4GL(http://www.basic4gl.net/
 OpenGLを基幹インターフェイスにしたゲーム用開発言語。
 考え方はAGKやDarkBASICに近い。
 上記の2つと同じように実行ファイルのメディアパッケージング可能。

・ 99BASIC(http://www.sagami.ne.jp/tadaka/99Basic/
 MSXやPC-8801世代の旧式マイクロソフトBASICに準拠したBASIC。
 DirectXはサポートしておらず、簡単な2Dインターフェイスのみ使える。
 インタープリター形式で直接実行モードもある
364デフォルトの名無しさん:2013/04/06(土) 20:48:52.05
std.process の置換え版のレビューがはじまた
http://forum.dlang.org/thread/[email protected]

目玉はパイプ・リダイレクト
365デフォルトの名無しさん:2013/04/06(土) 23:01:37.87
Streamは何も進展ないの?
366デフォルトの名無しさん:2013/04/07(日) 00:30:37.74
>>360
msvcrt.libってどっかで使ってるんですか?
この期にDerelict3の環境整えようと思うんですけどその当たりに絡んでくるものだったりですか?
367デフォルトの名無しさん:2013/04/07(日) 02:22:32.91
msvcrt.libはCランタイム
368360:2013/04/07(日) 03:47:52.42
>>366
msvcrt.libについてはちょっと書こうとおもってました。
2.059から2.062の間に std.stdio.fopen の中身がCの fopen から _wfopen にかわったみたいなんですが、
snn.lib にはいってる _wfopen が日本語に対応してないみたいなんですよ。
で、これまでは SHIFT-JIS に変換して std.stdio.File のコンストラクタに渡してたんですが、
2.062 でそれすると中で呼ばれてる toUTF16z がコケるんで手詰まりだったんです。
で、msvcrt.lib の _wfopen を呼ばせるようにリンクしたら今度は snn.lib とシンボルがかぶってる旨のエラーが出てそのままじゃ使えない。
ってことで、coffimplib -e でまず module definition file を作って中の(_sprintfだったかな?)シンボルをいくつか消して、
さらに implib して作ったのが付属の msvcrt.lib です。Derelict関係ないですね。長文スマソ
369デフォルトの名無しさん:2013/04/07(日) 09:31:28.29
日本語対応してねーぞゴルァ! ってうぉるたーたんに言っとけ
370デフォルトの名無しさん:2013/04/07(日) 11:31:37.33
>>368
中でtoUTF16zしてるならSJISじゃなくてUTF-8で渡さないとだめなんじゃね?
371デフォルトの名無しさん:2013/04/07(日) 12:33:29.98
>>368
あー・・・
D言語をディープに使っていくのは茨の道だということが分かりました
372デフォルトの名無しさん:2013/04/07(日) 12:40:17.40
>>368
Windows(FAT32、NTFS)のファイルパスって一部記号が使えないだけの完全UnicodeだからそもそもShift-JIS渡しちゃダメじゃね?
373デフォルトの名無しさん:2013/04/07(日) 13:17:30.09
そうか、WinXPが発売されてからもう10年たつんだよな
374デフォルトの名無しさん:2013/04/07(日) 15:05:18.15
>>372
ファイルシステム関係なく
W系の関数ならUnicode(UTF16)
それ以外のA系とか何もついてない系はShiftJISを渡す
DのcharはUTF8のことだから、今までShiftJISで動いてたならそれがバグ
>>368は単純にtoUTF16zにShiftJIS突っ込む形になって死んでるのでは
375デフォルトの名無しさん:2013/04/07(日) 17:53:38.98
歳だけ無駄に食ったな
376デフォルトの名無しさん:2013/04/08(月) 18:23:33.25
>>313
今の今まで忘れてたけど今日発売だった
ここ見てるような奴らはだいたい買うだろ
377デフォルトの名無しさん:2013/04/08(月) 22:26:51.84
俺の記憶が正しければ4/9だったような
378デフォルトの名無しさん:2013/04/08(月) 22:29:02.91
大きい書店だと入荷してもう売ってるよ
俺も買ってきた
379デフォルトの名無しさん:2013/04/08(月) 22:55:57.51
Amazonさんは11日に届くとおっしゃってた
380デフォルトの名無しさん:2013/04/08(月) 23:02:40.51
ISBNコードplz
381デフォルトの名無しさん:2013/04/08(月) 23:03:05.76
>>378
いや、それはフライング販売なだけで発売日とは・・・
そうか今日行けば売ってたかもしれないのか・・・
382デフォルトの名無しさん:2013/04/08(月) 23:06:15.29
>>380
好きなほうを
ISBN-10 : 4798131105
ISBN-13 : 978-4798131108
383デフォルトの名無しさん:2013/04/08(月) 23:07:15.74
翔泳社は8日だと言っている
384デフォルトの名無しさん:2013/04/08(月) 23:17:25.66
>>382
ありがと
さっきまで>>353のタイトルで検索してたよ
385デフォルトの名無しさん:2013/04/08(月) 23:28:53.26
>>353は禁書
386デフォルトの名無しさん:2013/04/08(月) 23:37:08.06
>>384
しむら日付ー!

ちなみに俺もTDPLって略称に慣れすぎてて
原題で検索かけてあれ尼登録されてねえなーって思ってたクチだったりする。
387デフォルトの名無しさん:2013/04/08(月) 23:41:02.18
日本語版買ったらますます原書がインテリなインテリアに
388デフォルトの名無しさん:2013/04/09(火) 00:50:35.74
日本語版の方が2.062準拠で新しいからなぁ、原著2版や分野別のD言語利用例本はまだかな
389デフォルトの名無しさん:2013/04/09(火) 01:30:04.77
ver1系で離脱して久々に触ろうにもよくわからんのでよい書籍がないか聞こうと思ったら何か発売されていたでござる
390デフォルトの名無しさん:2013/04/09(火) 01:39:56.85
>>389
アクションゲームを作らないかい
391デフォルトの名無しさん:2013/04/09(火) 12:21:46.35
optlinkが死ぬバグの修正(見込み)パッチが出たようだ

ただしまだ正式にコミットされてないので
optlinkのソースをgithubから取得してPullを取り込んでビルドする必要がある
https://github.com/DigitalMars/optlink/pull/8
392デフォルトの名無しさん:2013/04/09(火) 13:12:04.77
>>390
おすすめのライブラリ
393デフォルトの名無しさん:2013/04/09(火) 19:43:05.24
>>393
個人的にはdxlib4dだけど世間一般ではSDLのほうがいいと言われる希ガス
394デフォルトの名無しさん:2013/04/09(火) 20:10:52.63
>>391
おい、嘘だろう?
395デフォルトの名無しさん:2013/04/09(火) 20:37:29.03
http://forum.dlang.org/thread/20130408153357.00000e54@unknown
詳しくはここ

俺は試してない(キリッ
396デフォルトの名無しさん:2013/04/09(火) 22:30:45.51
今世紀最大の事件だといっても過言ではない
397デフォルトの名無しさん:2013/04/09(火) 23:02:35.22
>>392
Derelict3で2DならSDL2、3DならGLFW3を使う
DXLib for Dが使えたらWindowsじゃ最高だけど更新止まってる

http://qiita.com/items/ae23b681a47d9a16f4c6
398デフォルトの名無しさん:2013/04/11(木) 12:16:32.23
>>395
公式に取り込まれた

バイナリ配布
ttp://ftp.digitalmars.com/optlink.zip

まぁ何もかも一発で直るかどうかはわからないけど入れておいた方がよさげ
399デフォルトの名無しさん:2013/04/12(金) 21:30:42.98
ありがたや
400デフォルトの名無しさん:2013/04/13(土) 00:37:02.59
うおお、本当に例のエラーが出ない
連想配列のlengthが無いとか怒られてリンクできなくなったけどそんなの関係ねぇ!
401デフォルトの名無しさん:2013/04/13(土) 17:10:34.63
関係あれよw
402デフォルトの名無しさん:2013/04/14(日) 23:19:45.18
>>398 のせいかな
たまに16bitAppがどうの言ってエラーで起動できないことがある
403デフォルトの名無しさん:2013/04/15(月) 12:17:09.09
書店でD言語の分厚い本を見かけたので、
久しぶりにこのスレにきました。

早くD言語が広まることを望みます。
404デフォルトの名無しさん:2013/04/15(月) 16:00:55.70
厚い本がでたのか
405デフォルトの名無しさん:2013/04/15(月) 16:05:21.33
D言語の薄い本とかあったな
406デフォルトの名無しさん:2013/04/15(月) 16:20:34.51
Dは広まるより先に安定しろと
407デフォルトの名無しさん:2013/04/15(月) 17:07:38.64
最近は破壊的変更も数ヶ月に一度だし安定してきてるよ
408デフォルトの名無しさん:2013/04/15(月) 18:40:38.60
過去の誤りに満ちた歴史と比較するのではなく
同時代の実用性の十分な言語と比較せよ
409デフォルトの名無しさん:2013/04/15(月) 20:03:03.41
破壊的変更が許容される文化だからAndreiや他の人たちもDに協力してるんだろう
無理に安定させようとすると、つまんなくなってやめちゃう可能性大
410デフォルトの名無しさん:2013/04/15(月) 20:04:55.38
普及しないうちにドラスティックな変更をして実験するんだ!
411デフォルトの名無しさん:2013/04/15(月) 20:17:55.35
そしてその果実は他の実用的な言語が得るんだ!
412デフォルトの名無しさん:2013/04/15(月) 20:29:56.36
(Common) Lispは、言語をフルを扱えない愚民どもがアイディアをつまみにくる言語である -- Erik Naggum
これをDに置き換えるとな
413デフォルトの名無しさん:2013/04/15(月) 20:31:21.34
動的型付け言語はそこらじゅう実験場だらけだけど、
静的型付け言語の実験場ってD以外になにかある?
あったらヲチしたいわ
414デフォルトの名無しさん:2013/04/15(月) 22:16:07.45
たらヲ氏ね
415デフォルトの名無しさん:2013/04/16(火) 07:45:33.46
rustとか今はいろいろ実験してておもしろい。
今年中に1.0にするらしいから、いつまでこの状態が続くか分からないけど。
416デフォルトの名無しさん:2013/04/16(火) 21:01:14.38
Derelict3はSDL2のdllを自分で作らなきゃいかんし
ちょっとバージョン古いけどdxlib4dで妥協することにした
417デフォルトの名無しさん:2013/04/16(火) 21:04:52.63
Derelict3は正直めんどいのでDerelict2使ってる
418デフォルトの名無しさん:2013/04/16(火) 21:16:16.25
>>416
Windows用のSDL2、GLFW3のDLLは配布されてるぞ?
419デフォルトの名無しさん:2013/04/16(火) 21:17:30.49
URL忘れてた
ttps://www.dropbox.com/s/jmttaphy1o59q3b/SDL2.dll
ttps://www.dropbox.com/s/5h2tohrxqutg66r/glfw3.dll

GitHubのファイルアップロード機能が削除されたからリポジトリサーバーには含まれてない
420デフォルトの名無しさん:2013/04/16(火) 22:40:52.08
SDL_imageとかmixerとかttfとかないじゃないですかヤダー
421デフォルトの名無しさん:2013/04/16(火) 23:49:09.67
そんへんってSDL1のと共通じゃないの?
422デフォルトの名無しさん:2013/04/17(水) 01:22:45.91
Dか
何年か前仕様見て感動したけど
今じゃC#でいいわ。C#が欲しい機能みーんな実装してくれた
423デフォルトの名無しさん:2013/04/17(水) 07:31:24.61
ワロタ
424デフォルトの名無しさん:2013/04/17(水) 18:51:46.95
C++が出てくるあたりにDがあれば話はちがったろうな
C#のあとじゃまさに後の祭り。
そもそもD言語って公的スペックあったっけ?所詮同好会言語だろプゲラ
425デフォルトの名無しさん:2013/04/17(水) 19:16:45.83
とは言ってもDはC++の不満に基づいて作られてる側面はあるからなあ
426デフォルトの名無しさん:2013/04/17(水) 20:00:37.21
C#は.NET依存言語だからなんか嫌だ
427デフォルトの名無しさん:2013/04/17(水) 20:54:36.08
mono
428デフォルトの名無しさん:2013/04/17(水) 22:22:32.90
Dの唯一最大の弱点がライブラリの貧弱さだと思った今日このごろ
やっぱ使用者人口多くないとダメなんかのー
429デフォルトの名無しさん:2013/04/17(水) 23:27:54.38
はたしてそうかな
430デフォルトの名無しさん:2013/04/17(水) 23:55:00.13
最大の弱点が破壊的変更であり
ライブラリを枯死させ
使用者を遠ざけていることはいまさら言うまでもない

せめて2年に1度くらいにまとめて
メジャーバージョンごとに違う名前をつけてるくらいでないとダメ
431デフォルトの名無しさん:2013/04/18(木) 00:20:54.01
そんなD言語いらない
432デフォルトの名無しさん:2013/04/18(木) 00:43:17.23
Dの魅力はその破壊的変更でもあるんだな
みんな次どうなるか気になるし、作ってる方は好き勝手自分の思うことができる
これがなくなったらDは糞つまらないものになるだろう
433デフォルトの名無しさん:2013/04/18(木) 09:34:03.84
だから趣味レベルから脱却できないおこちゃま言語
ビジネス的には魅力のかけらもなくてつまらないことこの上ないD言語
D言語 == ダメ言語
434デフォルトの名無しさん:2013/04/18(木) 10:19:32.83
破壊的変更はD言語使いにとってはご褒美です
435デフォルトの名無しさん:2013/04/18(木) 10:32:50.72
なんか変な人が出てきたな
春だからか
436デフォルトの名無しさん:2013/04/18(木) 13:25:06.69
申し訳ないがNHH以外はNG
437デフォルトの名無しさん:2013/04/20(土) 02:24:30.85
この時間D言語やってるの俺だけの予感
438デフォルトの名無しさん:2013/04/20(土) 13:54:49.31
ポインタを返すdll内の関数を呼ぶときに何かする必要ありますか?
例えば戻り値にGC.addRootが必要?
439デフォルトの名無しさん:2013/04/20(土) 14:30:09.21
状況にもよるけどDの外にあるポインタがDのGCに回収されるとまずいんじゃ
440デフォルトの名無しさん:2013/04/20(土) 15:23:15.53
DLLが Dで書かれているならDLL内で newを使わずmalloc
呼び出し側が free

さもなければDLL側が removeRoot
呼び出し側が addRoot

こうじゃないかな
441デフォルトの名無しさん:2013/04/20(土) 15:43:14.10
Dでdllを作る場合の質問と思われた・・・
前衛的過ぎる・・・

Cで書かれたdllで公開された
 Something* createSomething();
deleteSometing(Something*);
を呼び出す場合についてです。
要するにD以外で確保されたメモリの管理についてです。

RAIIでSomethingリソースを管理しようと思うんですが、
D側でpが勝手にGCされないように
Something* p = createSomething();
GC.addRoot(p); //☆
:
GC.removeRoot(p); //☆
deleteSomething(p);
こうする必要あります?
442デフォルトの名無しさん:2013/04/20(土) 16:00:40.44
createSomething(); // = malloc
deleteSometing(Something*); // = free

GC全く関係ない
443デフォルトの名無しさん:2013/04/20(土) 18:31:05.13
あ、ポインタに入ってたものが参照されなくなったら開放されちゃうわけじゃないんだ
444デフォルトの名無しさん:2013/04/21(日) 09:53:52.68
>>440
> さもなければDLL側が removeRoot
> 呼び出し側が addRoot
これ間違い

DLLとEXEがGCを共有しない場合や、Cから呼ばれる場合に
DLL側がaddRoot・removeRootする
445デフォルトの名無しさん:2013/04/21(日) 11:07:30.02
基本的にCのライブラリを使う時にGCを気にする必要はない
446デフォルトの名無しさん:2013/04/21(日) 11:27:00.21
1.メモリブロックがGCの管理下にある( malloc と new の違い )
2.参照がいなくなる( GC.addRoot はこれを防ぐ )
3.GCによるメモリ回収

この流れで問題になるのは、>>444 のDLL内でメモリ確保して外部へ渡すケース

今回やっと理解したw
447デフォルトの名無しさん:2013/04/24(水) 16:33:06.92
template A(T...)で受け取った時
staticLength!TとT.lengthってどう違うんですか?
448デフォルトの名無しさん:2013/04/24(水) 19:06:29.70
>>447
staticLengthは大昔にあったコンパイラのバグ対策のために使われてた。
今はまったく無意味。T.lengthを使いましょう
449デフォルトの名無しさん:2013/04/24(水) 19:31:03.65
わかりました!ありがとうございました!!
450デフォルトの名無しさん:2013/04/26(金) 00:27:34.69
なんか話題ないですの?
451デフォルトの名無しさん:2013/04/26(金) 06:23:08.78
話題というと、そろそろDさんが踊ってみた動画が欲しい(ぇ
452デフォルトの名無しさん:2013/04/26(金) 06:49:41.76
ちょっと前から最前線はTwitterなのかなーって気がしてる。
最近Dの話題ROMるためだけに頑なに持ってなかった垢作っちまったし。
まー似たような奴けっこういそうだがここ。
453デフォルトの名無しさん:2013/04/26(金) 07:23:41.94
関数内にテンプレート作れるようになったとか聞いたけどマジか
454デフォルトの名無しさん:2013/04/26(金) 12:04:02.17
次バージョンの新機能等をまとめる任務を与えよう(URLが長すぎるので分割)
http://d.puremagic.com/issues/buglist.cgi?chfieldto=2020-12-31&chfieldfrom=2013-02-10&version=D2&version=D1%20%26%20D2&product=D
&query_format=advanced&chfield=resolution&chfieldvalue=FIXED&bug_severity=enhancement&bug_status=RESOLVED&resolution=FIXED

リリースまでに増える可能性もあるけど
455デフォルトの名無しさん:2013/04/26(金) 12:21:24.49
>>450
bugzillaの登録件数が週末にも新時代へ突入
ttp://d.puremagic.com/issues/show_bug.cgi?id=9992
456デフォルトの名無しさん:2013/04/27(土) 17:17:04.68
連想配列をvalueでソートされた形で、keyとvalueのペアを取得するにはどうすればいいですか?
457デフォルトの名無しさん:2013/04/27(土) 19:04:12.63
import std.algorithm;
import std.range;

sort!"a[1]<b[1]"(zip(m.keys, m.values));
458デフォルトの名無しさん:2013/04/27(土) 22:39:32.39
>>457
thx
なるほどzipを使うんですね。
459デフォルトの名無しさん:2013/04/28(日) 03:41:45.83
>>455 早くも9999 になったぞ

そして栄光の Issue 10000 は
bugzilla don't accept Issue of number 10000
に決まりだ
460デフォルトの名無しさん:2013/04/28(日) 05:56:10.63
461デフォルトの名無しさん:2013/04/28(日) 06:13:49.05
10000キタ━━━(゚∀゚≡(゚∀゚≡゚∀゚)≡゚∀゚)━━━━!!!!!!!!!!
462デフォルトの名無しさん:2013/04/28(日) 07:59:07.12
これが通らないのは何故ですか?
auto sum = x => reduce!("a+b")(0, x);

Error: variable temp.main.sum type void is inferred from initializer (x) => reduce!("a+b")(0, x), and variables cannot be of type void
Error: cannot infer function literal type from _error_
463デフォルトの名無しさん:2013/04/28(日) 08:07:09.74
自己解決しました。
auto sum = (int[] x) => reduce!"a+b"(0, x);
464デフォルトの名無しさん:2013/04/28(日) 14:25:34.17
それC++14では可能になるんだよな
Dにも採用してホスィ・・・
465デフォルトの名無しさん:2013/04/28(日) 15:32:21.67
テンプレート地獄でコンパイル速度が遅くなりすぎて辛い
466デフォルトの名無しさん:2013/04/28(日) 19:33:38.41
CTFEの内部改善が怒涛の勢いで入ってるから早くはなってる
467デフォルトの名無しさん:2013/04/28(日) 20:58:53.43
>>462-464
最近考察してみました
https://gist.github.com/9rnsr/1c93f6d6a54318b656b6

生のテンプレートラムダをaliasテンプレートパラメータで受け取り
nested structで包んでやれば、原理的にはPolymorphic lambdaが作れると考えてます
実行時にはコンテキストポインタを1つ持ち運ぶ形になります

まあ、現状はコンパイラがうまく動いてくれないので実現出来てないのですが
468デフォルトの名無しさん:2013/04/28(日) 21:52:18.29
カリー化かーhaskellとかscalaっぽくていいね
469デフォルトの名無しさん:2013/04/29(月) 00:54:51.13
D言語を使い続けるためにモチベーションをあげる言葉をくれさい
470デフォルトの名無しさん:2013/04/29(月) 01:11:21.61
D言語のおかげで彼女できました。
彼女はウォルたんで私は四歳でした。
今では私がおじいさん。
471デフォルトの名無しさん:2013/04/29(月) 01:39:26.27
任意bit深度画像データから任意bit画像データへの拡大縮小ルーチン書いててモチベ出なくて死ぬ
パレットカラーとかバイトオーダーとかバリエーション多すぎてワロえない…10年ぶりくらいに書いてる

>>470
既に高坂桐乃という嫁がいるので…
472デフォルトの名無しさん:2013/04/29(月) 01:51:11.09
ピクセル取る関数と置く関数を書けばいいじゃない
473デフォルトの名無しさん:2013/04/29(月) 01:58:58.38
そうそれがすごくめんどくさい、ピクセル単位だと遅いからライン単位で関数を書いてくんだけど
フルカラー画像からパレットカラーに転送するときに色空間分割とかなんとか今日は嫁が画面から出てきてくれなくてパワーが足りなくて眠れない
474デフォルトの名無しさん:2013/04/29(月) 11:47:25.11
コンパイルオプションでforeachとforeach_reverseを切り替えたいんですが、
下記のようにするとコンパイラに怒られました。
エラーメッセージを見る限りfeはコンパイル時に決定するので出来そうな気がするんですが
こういうこと出来ないんでしょうか。

import std.stdio;
void main(){
version(none){
string fe = "foreach";
}else{
string fe = "foreach_reverse";
}
mixin(
fe ~ q{(x; [1, 2, 3]){
writeln(x);
}
});
}

Error: variable fe cannot be read at compile time
475デフォルトの名無しさん:2013/04/29(月) 12:10:27.36
enum string fe = "foreach";

コンパイル時なんちゃらをやるための基本
476デフォルトの名無しさん:2013/04/29(月) 14:39:36.49
イケタ!ありがとう。
477デフォルトの名無しさん:2013/04/29(月) 22:03:07.47
構造体を値とする連想配列に構造体を代入したとき
呼ばれるopAssignのthisのメンバが未初期化状態になっているようです。
かといって初期化されているというのも文脈的に微妙な感じがします。
以下が考えられると思うんですが、これは不具合なのでしょうか、その場合、実際はどうなっているのが正しいのでしょうか。

 1.不具合ではない。
 2.dmdの不具合。opAssignが呼ばれないのが正しい。
 3.dmdの不具合。S.initで初期化された後、opAssignが呼ばれるのが正しい。
 4.dmdの不具合。その他。

import std.stdio;
struct S{
 int n;
 void opAssign(S rhs){
  writeln(n);  // 連想配列に突っ込んだときに呼ばれた場合、メンバが未初期化の値になっている
  stdout.flush();
  assert(this == S.init);
 }
}

void main(){
 S s;
 S t;
 s = t;   // ok (sはS.init)

 S[int] a;
 a[0] = s;  // core.exception.AssertError
}
478デフォルトの名無しさん:2013/04/29(月) 22:05:40.96
>>477の追記です。
不具合でない場合、opAssignが呼ばれたのが未初期化状態のthisに対して行われたものかどうか判断する方法はあるのでしょうか。
479デフォルトの名無しさん:2013/04/29(月) 22:29:31.55
連投すみません。
ちなみに>>477の影響でこれが落ちます。

import std.stdio;
void main(){
 File f;
 File[string] a;
 a[""] = f;
}

object.Error: Access Violation
480デフォルトの名無しさん:2013/04/29(月) 23:20:23.57
連想配列への代入の直前に不定値が入ってしまうという件だな
右辺の評価で例外が発生した時に困るという話を聞いたような
481デフォルトの名無しさん:2013/04/30(火) 18:49:08.72
>>477-479

現状の挙動がバグなのは確定。不定値が見えるのは明らかにおかしい。
ただ、どういう挙動が正しいかははっきり決まってなかったと思う。
482デフォルトの名無しさん:2013/04/30(火) 19:00:17.42
>>479 はデストラクタの中で落ちてる
ありえないw
483デフォルトの名無しさん:2013/05/01(水) 00:39:27.92
>>481
ということは既知の問題でしばらくは修正来なそうですね
連想配列に構造体を格納するときはポインタにしておきます・・・
484デフォルトの名無しさん:2013/05/01(水) 07:10:43.61
2.061で構造体のポインタの配列になんかするとポインタがぶっ壊れる問題は
修正されたらしいからポインタなら安心だね
485デフォルトの名無しさん:2013/05/01(水) 20:40:52.49
std.stdio.Fileのコンストラクタに日本語のパスを渡すと実行時にエラーが出てしまいます(stdio.d(315): Cannot open file....)。
環境はwindowsです。文字コードの問題だと思うのですが、どうすればいいのでしょうか?
486デフォルトの名無しさん:2013/05/01(水) 21:43:52.01
fromMBSzかなんかでstringに変換するんじゃなかったかな。
std.windows.charsetだっけ、うろ覚えですまぬ。
487デフォルトの名無しさん:2013/05/01(水) 22:17:01.55
>>486
レスthx
toMBSzでSHIFT-JIS?に変換して、std.conv.toでstringにしてやってみましたが、
今度はutf.d(290): invalid UTF-8 sequenceというエラーが出ました。
Dの標準ライブラリで日本語パスのファイルを扱うのが無理なのか・・・
488デフォルトの名無しさん:2013/05/01(水) 22:42:29.39
>>487
元々のパスがSJISなんじゃないか?
UTF-8を渡せ
489デフォルトの名無しさん:2013/05/01(水) 22:50:26.36
>>488
path = fromMBSz(path.ptr)
かな
たしかに普通にUTF-8でやっててFileとかでエラーになるの経験無い
490デフォルトの名無しさん:2013/05/01(水) 22:54:28.66
>>489

$ cat a.d
import std.stdio;
import std.windows.charset;
void main(){
File f = File(r"あ.txt".ptr.fromMBSz());
}

std.exception.ErrnoException@std\stdio.d(315): Cannot open file `邵コ繝サtxt' in mode `rb' (Invalid argument)
491デフォルトの名無しさん:2013/05/01(水) 23:02:08.96
>>490
ソースコードは何の文字コードで保存してる?
492デフォルトの名無しさん:2013/05/01(水) 23:14:05.59
fromMBSz じゃなくて toMBSzのはず

それにしても File のコンストラクタが string (UTF8) を受け取って
Windowsにそのまま渡すってのはよく考えたら Phobosの バグじゃないか
493デフォルトの名無しさん:2013/05/01(水) 23:14:12.96
>>491
UTF-8

File f = File(r"あ.txt");でも同じエラーだからむしゃくしゃしてやった
494デフォルトの名無しさん:2013/05/01(水) 23:19:40.43
Dさんもiconv使ってたよね
495デフォルトの名無しさん:2013/05/02(木) 07:05:33.47
なんかrdmdとdmdでその辺の挙動が違っていらいらしたような記憶がある
496デフォルトの名無しさん:2013/05/02(木) 12:06:53.73
つかソース付いてるんだからソース読めばいいじゃない
Fileのコンストラクタで受け取ったファイルパスはWindows環境ならtoUTF16zして_wfopenに渡してる
だからファイルパスはUTF-8で渡すのが正しい
ただこれ最近直った箇所なんでdmdのバージョン確認してみ2.062なら直ってる
497デフォルトの名無しさん:2013/05/02(木) 13:50:13.50
2.061 で変更入ってたのか
こんな重要な変更をアナウンス無しで入れるんじゃねーよ…
498デフォルトの名無しさん:2013/05/02(木) 14:12:45.26
あー、ごめん直ってないやこれ
>>368でも出てるけどsnn.libのW系関数バグったままみたい
直したんじゃなくて、テストでエラーにならないようにしただけだ最悪だ
ttp://d.puremagic.com/issues/show_bug.cgi?id=8643
499デフォルトの名無しさん:2013/05/02(木) 16:56:17.12
std.file の方は正しく実装されてるみたいだね
500デフォルトの名無しさん:2013/05/02(木) 17:06:52.15
FileってScopedが作られてから、試しに作ってみようぜ的な感じで作られた感が否めない
501デフォルトの名無しさん:2013/05/02(木) 18:03:42.28
D用のライブラリがC用のライブラリ使ってるってのも変な話だ
普通ネイティブAPI使うだろうに(std.fileのように)
502デフォルトの名無しさん:2013/05/02(木) 20:46:29.66
まあ日本語パス使うなってことだ
海外製アプリの常識だべ
それよりxyzzyのd-modeはどこいったんだ?
emacsのd-mode.lしかみつからん
503デフォルトの名無しさん:2013/05/03(金) 00:07:36.88
ユーザーにまでそれを強いることは出来ないから却下
504デフォルトの名無しさん:2013/05/03(金) 11:13:23.20
GWなんだしDでなんかつくろうず
505デフォルトの名無しさん:2013/05/03(金) 14:33:07.10
>>502
xyzzyのd-mode、ライセンスがわからないからどこにも置けないんだと思う
再配布オッケーかわからんので、持っていても上げられない

かなりの部分はcc, c-modeを参考にしているみたいだたから、それらを改造した方が早いかも
506デフォルトの名無しさん:2013/05/04(土) 14:01:07.02
今日書店行ったらD言語のやたら厚い入門書が売れていてびっくりした。
あれは買うべきなのか。
507デフォルトの名無しさん:2013/05/04(土) 14:49:47.73
入門書ってどれ?
508デフォルトの名無しさん:2013/05/04(土) 15:11:44.94
TDPL日本語訳のことじゃないの?
509デフォルトの名無しさん:2013/05/04(土) 15:16:53.43
お布施として買ったよ。
まだ読み終わっていないけど
「プログラミング言語C++」の路線でより軽快。
どうしてこういう仕様になったのかという背景思想がたくさん書いてあるから読んでいて楽しい。
510デフォルトの名無しさん:2013/05/04(土) 15:35:25.12
入門書ではないはずだが

やはりD言語パーフェクトガ
511デフォルトの名無しさん:2013/05/04(土) 16:05:42.64
>>510 の首に吹き矢が…
一体誰がこんなことを
512デフォルトの名無しさん:2013/05/04(土) 21:50:40.91
はぁ、正規表現えろい...
captureしたRegexMatchが階層構造になってないとことかえろすぎて精気吸い取られる...
513デフォルトの名無しさん:2013/05/05(日) 00:17:17.55
むしろ階層構造になってる言語(ライブラリ)ってあったっけ?
514デフォルトの名無しさん:2013/05/05(日) 04:27:36.68
(y, x) = (x, y);でswap出来るとどっかで見た気がするけど全然そんなことなかった
515デフォルトの名無しさん:2013/05/05(日) 10:52:01.92
516デフォルトの名無しさん:2013/05/05(日) 11:04:56.44
Note: Cannot swap values by tuple assignment.

oh
517デフォルトの名無しさん:2013/05/05(日) 12:53:34.40
Pythonみたいなってことだな
518デフォルトの名無しさん:2013/05/05(日) 13:24:25.25
ああ、pythonで見たのか
確かに

>>> (x, y) = (1, 2)
>>> (x, y) = (y, x)
>>> print x, y
2 1
519デフォルトの名無しさん:2013/05/05(日) 13:56:11.13
彼らはBASICから得られた体験を ” タブー視 ” しなければいけないため、常に孤立を要求される。
520デフォルトの名無しさん:2013/05/07(火) 01:34:06.41
テンプレートの反変、共変マダー?
521デフォルトの名無しさん:2013/05/10(金) 21:47:13.11
int n = 2;
writeln(2 ^^ 0.5); // 1.41421
writeln(n ^^ 0.5); // Error: undefined identifier 'std'

えっ。
522デフォルトの名無しさん:2013/05/10(金) 22:01:37.47
(^ ^;)
523デフォルトの名無しさん:2013/05/10(金) 23:22:50.84
再現しないと思ったらシンボルインポートか
import std.stdio: writeln;

モジュールまたいで衝突するから嫌いだ
524デフォルトの名無しさん:2013/05/10(金) 23:45:23.15
指定インポートってなんであんなに仕様違うの?
525デフォルトの名無しさん:2013/05/11(土) 00:44:34.36
>>521
実行時の累乗演算はstd.math.powに変換されるので、std.mathをimportしないと
コンパイルに失敗する
526デフォルトの名無しさん:2013/05/11(土) 01:15:55.64
なにそのミラクル仕様
527デフォルトの名無しさん:2013/05/11(土) 01:21:52.90
勝手に変換するなら勝手にimportしてくれwww
528デフォルトの名無しさん:2013/05/11(土) 01:25:11.99
仕様みたいだな
だがドキュメントに明記されていない
529デフォルトの名無しさん:2013/05/11(土) 01:37:00.81
それアリなら複素数も消えなくてよかったのでは・・
530デフォルトの名無しさん:2013/05/11(土) 11:54:48.12
定数時間で中間要素に挿入/削除がしたくてatd.container.DListを使おうと思ったんですけど、
removeに渡すRangeの取り方がない気がします。
何か方法はあるのでしょうか?

DList!(int) list, tmp;
tmp.insertFront(1);
auto range = tmp[];
list ~= range; // A
list.remove(range); // AでノードがディープコピーされてるためNG
531デフォルトの名無しさん:2013/05/11(土) 23:51:23.47
Visual D 0.3.36キテター
532デフォルトの名無しさん:2013/05/12(日) 10:41:40.20
>>530
初めて見たけどすごく用途が限られてるような
真ん中に差し込んでいくツリーイメージで合ってる?
ノードを指定して両端からの追加・削除しかできない

import std.container, std.array, std.stdio;

void main()
{
auto a = DList!(int)( [3] );
auto b = a;
b.insertFront(2);
b.insertBack(4); // b : [ b1 [ a ] b2 ]
auto c = b;
c.insertFront(1);
c.insertBack(5); // c : [ c1 [ b1 [ a ] b2 ] c2 ]

writeln(c.array);

b.remove(b[]);
writeln(c.array); // c : [ c1 c2 ]
}
533デフォルトの名無しさん:2013/05/12(日) 10:59:06.37
補足すると
例えば中間要素の挿入・削除をしたいとすると
中間ノード b を基準にその両端に追加・削除することになる

基準になるノードを決められなければ思い通りの操作ができないはず
534530:2013/05/12(日) 12:19:02.43
>>532-533
なるほど・・・こんな方法があったんですね。
しかし、このリスト使いにくいなぁ。

auto list = DList!(int)([1, 2, 3, 4, 5]);
auto r = find(list[], 4);
list.remove(r); // [4]ではなく[4, 5]が削除されてしまう

特定の要素を検索して削除することもできない。
535デフォルトの名無しさん:2013/05/12(日) 12:39:05.99
ところで DConf で D3 の話は出たんだろうな? 当然出たよな? な? な?
536デフォルトの名無しさん:2013/05/12(日) 14:45:25.07
VisualD久しぶりだな
537530:2013/05/12(日) 17:41:45.73
あーだめだ。insertFrontがちゃんとチェーンの付け替えをするのに対し、removeFrontはビューしか変わらないせいで、
> 中間ノード b を基準にその両端に追加・削除することになる
これができないですね。

auto a = DList!(int)( [3] );
auto b = a;
b.insertFront(2); // a = [2, 3] b = [2, 3]
b.removeFront(); // a = [2, 3] b = [3]

未完成品か・・・
538デフォルトの名無しさん:2013/05/12(日) 19:37:18.52
もしかしてDって割りと変態言語だったりする・・・?
539デフォルトの名無しさん:2013/05/12(日) 21:56:59.63
C++ほどではない
540デフォルトの名無しさん:2013/05/12(日) 22:00:38.17
C++にはちょっと負けるかな
541デフォルトの名無しさん:2013/05/12(日) 23:07:34.75
おまいら歌って踊れるうぉるたんの勇姿は当然みたよな
http://dconf.org/talks/bright.html
542デフォルトの名無しさん:2013/05/14(火) 12:01:49.06
.d ファイルを開くときの関連付けってどうしてる?
エディタで開くか、RDMDで擬似スクリプト実行するか

Winユーザはおおむね前者だと思うけど
543デフォルトの名無しさん:2013/05/14(火) 17:23:12.70
ふつーにエディタ
544デフォルトの名無しさん:2013/05/14(火) 20:21:59.21
rdmd使いたい場面って限られるからなぁ
545デフォルトの名無しさん:2013/05/14(火) 20:29:51.75
improt追尾してくれて便利だよ!
546デフォルトの名無しさん:2013/05/14(火) 21:25:21.91
むしろここんとこrdmd経由でしか使ってない
関連付けは普通にエディタだけど。
547デフォルトの名無しさん:2013/05/15(水) 18:38:36.13
2.063beta
ttp://ftp.digitalmars.com/dmd2beta.zip

目玉は多い
・__FUNCTION__
・ローカルインポートによるUFCS
・std.process(新)
あと何かあったっけ >>454
548デフォルトの名無しさん:2013/05/15(水) 19:11:34.85
ローカルインポートの時は関数のメソッド風呼び出しできないんだね・・
549デフォルトの名無しさん:2013/05/15(水) 19:12:29.84
と思ったらリロードしたら出来るようになるって!わーい
失礼しました
550デフォルトの名無しさん:2013/05/15(水) 20:19:30.09
>>454
Issue 2630 が入ってないということはURLの期間の区切りがおかしいのか?
・unittest の中身を関数の使用例として ddoc ドキュメントに出力する機能
・dmd -unittest -cov=100 -main で単体テストのソースカバレッジ率強制
このへんライブラリ製作者向けの機能
551デフォルトの名無しさん:2013/05/15(水) 22:57:09.93
>>543-546
ありがと
RDMD関連付けは特に気にしなくてもいいのかな…今のところは
552デフォルトの名無しさん:2013/05/16(木) 20:58:24.85
>>541 の Videoが HD になっとるw
553デフォルトの名無しさん:2013/05/17(金) 00:24:39.28
>>538-540
http://d.puremagic.com/issues/show_bug.cgi?id=10094
こういうのはおまいら的にどう?
554デフォルトの名無しさん:2013/05/17(金) 07:50:30.05
JavaScriptっぽい
555デフォルトの名無しさん:2013/05/17(金) 23:09:00.01
いつになったら
3 < x && x < 5

3 < x < 5
ってかけるようになんだよ
IA64で命令数増えちゃうじゃんか
556デフォルトの名無しさん:2013/05/17(金) 23:42:01.51
__ltlt(3,x,5) みたいな組み込み関数用意するか
557デフォルトの名無しさん:2013/05/18(土) 00:06:45.48
3 < x < 5
がありなら
3 < x < y < 5
もありだな。
「多重比較式」とでも呼ぶべきか
558デフォルトの名無しさん:2013/05/18(土) 00:10:39.59
__ltltlt(3,x,y,5) みたいな組み込み関数用意するか
559デフォルトの名無しさん:2013/05/18(土) 00:21:59.41
[3,x,y,5].isSorted とかなんとか既存の仕組みで書けるはず
速いかどうかは知らん…いや、遅いw
560デフォルトの名無しさん:2013/05/18(土) 15:43:55.27
x = y = 2 かける
x + y + 2 かける
x ^ y ^ 2 かける
x < y < 2 かけない
(´・ω・`)
561デフォルトの名無しさん:2013/05/18(土) 16:00:44.74
逆に考えるんだ
無いなら俺がそういう言語を作ってブレイクさせてやるぜ、と
562デフォルトの名無しさん:2013/05/18(土) 16:35:51.05
そういうのがD言語だと思ったが・・・
563デフォルトの名無しさん:2013/05/18(土) 19:24:08.97
ちょっと前に東大のどっかの研究室が作ってたコンパイル時パーサ生成言語がおもしろかった
行列クラスAがあったとすると
"t"expを逆行列を求める演算子と定義して B = tA ってつかえたり、
"|"exp"|"を行列式を求める演算子と定義して x = |A| ってつかえたり
それなら exp"<"exp"<"exp と定義してやれば上のもできるな多分
564デフォルトの名無しさん:2013/05/18(土) 22:04:07.45
>>560
x = yの結果はxとyの値になって
x + yの結果はx+yになって
x ^ yの結果はx^yになるけど
x < yの結果はtrueかfalseやないんね?

>>561
ちなみにPythonはできるのぜ
565デフォルトの名無しさん:2013/05/18(土) 22:50:00.96
条件式については比較演算子が真偽値を返す…ってのが一般的だけど
「失敗」で条件式を扱う言語もあるよ

その場合、例えばこんな仕様が考えられる
x < y < z ならまず x < y が成立しなければ「失敗」成立すれば「y」
y < z が成立しなければ「失敗」成立すれば「z」
「失敗」でないから条件式は成立したとみなされる…みたいなね
566デフォルトの名無しさん:2013/05/18(土) 23:16:15.40
>>565
それならx < yが成功してy == 0ならx < yはゼロになるんじゃないか?
567デフォルトの名無しさん:2013/05/18(土) 23:34:22.99
>>566
そうだよ
そういう言語の場合、条件式を必要とする文が見るのは
ゼロか否かでなく、失敗したかどうかになるからそれで問題ないのよ
まあDがそうなるとは思えないから、どうでもいいが
568デフォルトの名無しさん:2013/05/18(土) 23:39:55.79
「多重比較式」を英語で言うと
compound comparison expression
でいいか?
569デフォルトの名無しさん:2013/05/19(日) 04:44:06.86
>>565
bool r = 2 < (0 < 5) //単純に大きい方を保持してると成立しない
bool r = 2 > (0 < 5) //単純に小さい方を保持してても成立しない
570デフォルトの名無しさん:2013/05/19(日) 05:41:37.71
同階層の比較演算子のみ同一グループの多項演算子として振る舞うとか?
571デフォルトの名無しさん:2013/05/19(日) 10:48:08.16
>>564
漏れもそれで Python に乗り換えた
GUI もサクサク作れるし
実行速度も速いし
C/C++ に慣れてるひとには D よりも Python の方を薦める
572デフォルトの名無しさん:2013/05/19(日) 12:53:37.19
Pythonが実行速度速いとか何の冗談だ
画像処理とかで同じコード書いても体感20倍は速度違う

PyPyとかCythonとかなら速いのかもしれんがそっちはGUI作るのが不可能(´・ω・`)
573デフォルトの名無しさん:2013/05/19(日) 13:14:46.08
C/C++やDとはちょっと用途が違うよね
574デフォルトの名無しさん:2013/05/19(日) 13:37:01.06
Pythonでもガチの数値計算の場合は外のプリコンパイルライブラリにぶん投げが普通だしね
575デフォルトの名無しさん:2013/05/19(日) 13:52:59.17
時代はnode.jsだぜ
576デフォルトの名無しさん:2013/05/19(日) 17:17:59.26
Cの様に高速で、Pythonのように洗礼された言語、そんな言語ないかなぁ・・・・・・

あれ?
577デフォルトの名無しさん:2013/05/19(日) 17:19:28.91
Cythonの事か
578デフォルトの名無しさん:2013/05/19(日) 17:30:54.32
> Dの様に素敵で、Pythonのように洗礼された言語、そんな言語ないかなぁ・・・・・・

“破壊力の変わらない、ただひとつの言語” Dython
579デフォルトの名無しさん:2013/05/19(日) 17:31:44.21
宗教は勘弁
580デフォルトの名無しさん:2013/05/19(日) 17:38:51.41
Dの弱点をすべて克服した拡張言語 ED
581デフォルトの名無しさん:2013/05/19(日) 17:52:22.88
>>580
別の弱点がありそうじゃないか…orz
582デフォルトの名無しさん:2013/05/19(日) 18:04:47.79
肝心なときに起動しないという
583デフォルトの名無しさん:2013/05/19(日) 18:39:32.31
D言語の弱点を克服って事は
バージョンが上がっても高い互換性を維持しつつ
豊富なライブラリと強力な開発環境があって……って言語あんま関係ねぇな
584デフォルトの名無しさん:2013/05/19(日) 19:58:48.75
それなんてC#
585デフォルトの名無しさん:2013/05/19(日) 20:17:00.02
「Phobosってよく見たらひどい名前だな」
「いや、でも Deimosよりマシ」
しばらく経って Deimos登場

ってなことがあったのを思い出した
586デフォルトの名無しさん:2013/05/20(月) 14:56:40.26
ttp://archive.2ch-ranking.net/tech/1303022487.html#963
連想配列って、要素を詰め込んだ後にrehashしないと遅いみたいですけど、
要素の追加が不定期の場合、rehashのタイミングが難しいです。
C++のvecter.reserveのように、あらかじめハッシュテーブルのサイズを指定する事はできないんでしょうか?
587デフォルトの名無しさん:2013/05/21(火) 13:21:46.78
できない。多分
ちなみに dmd2\src\druntime\src\rt\aaA.d に実装がある
要素がいくつになったらテーブル拡張されるかのテーブルなら見られる
588デフォルトの名無しさん:2013/05/21(火) 16:46:17.92
>>586
レスthx
適当なタイミングでrehashするしかないか・・・
589デフォルトの名無しさん:2013/05/21(火) 19:24:30.59
そういう時こそdcollectionsの出番じゃないだろうか、できるかしらんけど
590デフォルトの名無しさん:2013/05/21(火) 19:27:51.71
例えばなんだが、
http://dpaste.dzfl.pl/c47273d4
こういう、実行時に判断して別の処理をした(つまり別の型になっちゃう)レンジを返したい、
みたいな時ってどうしたらいいんだろ
591デフォルトの名無しさん:2013/05/21(火) 20:44:49.10
>>590
std.rangeにあるinterface使えばいいんじゃないかな?
効率落ちそうだけど
592デフォルトの名無しさん:2013/05/22(水) 03:39:39.91
行列を素直に2次元配列で作るより1次元配列で作った方が4倍近くアクセスが高速な不思議
他の環境だとどうなるか気になるので誰か↓のコード試して結果教えてください><
http://dpaste.dzfl.pl/d22490f3
593デフォルトの名無しさん:2013/05/22(水) 08:47:25.22
1次元配列の方が高速だお
594デフォルトの名無しさん:2013/05/22(水) 09:27:26.91
純粋二次元配列と書いてある方は、純粋な二次次元配列ではなく、ジャグ配列なので参照を経由するから遅いのは当たり前
595デフォルトの名無しさん:2013/05/22(水) 09:31:00.48
Dって志はすごく良いんだけど現実はしょぼいよね
http://www.kmonos.net/alang/d/safed.html
596デフォルトの名無しさん:2013/05/22(水) 10:37:49.11
<A href="http://www.yahoo.co.jp/" target="_blank">ヤフージャパン</A></P>
597デフォルトの名無しさん:2013/05/22(水) 11:02:20.14
598デフォルトの名無しさん:2013/05/23(木) 00:38:24.90
>>592
メモリアクセスが糞効率悪いコードだな
それくらいSIMDつかえよ
599デフォルトの名無しさん:2013/05/24(金) 02:45:57.06
>>593,594,597
thx!
ポインタへのポインタになってたのかぐぬぬ

>>598
こうですかわかりません><
http://dpaste.dzfl.pl/a1e5cd265
600デフォルトの名無しさん:2013/05/24(金) 10:41:04.61
>>599
emmsが入ってないからその後ろのStopWatchの浮動小数点演算が狂うみたい
しかしさすがにSIMDは速いな
AVXなんかで行列演算系の命令も結構増えてるから最適化すればもっと速くなりそう
601デフォルトの名無しさん:2013/05/24(金) 12:00:33.06
core.simd による実装を所望いたす
602デフォルトの名無しさん:2013/05/24(金) 12:16:04.31
core.simd なんて在るの初めて知ったわ
http://www.kmonos.net/alang/d/simd.html
603デフォルトの名無しさん:2013/05/24(金) 12:32:02.19
asm使って書いた方が手っ取り早いと思うのだがなんかいいことあるのかなこれ
どの道asm命令知ってないと書けないし
604デフォルトの名無しさん:2013/05/24(金) 19:50:22.72
asmだとレジスタの最適化とかコンパイラが手を出せないでしょ
605デフォルトの名無しさん:2013/05/25(土) 01:03:38.95
>>603
vcやgccのintrinsic命令みたいなことをやりたいんだろう
asm文をまたいだレジスタ割り当てとかできないようだけれども
インラインアセンブラで無名レジスタとか使えるようにすればいいのにねー

R64 reg1;
asm{
mov reg1, RAX; // reg1は実行スコープ内で退避不要なレジスタに変換される
}

みたいな
606デフォルトの名無しさん:2013/05/25(土) 01:59:20.28
Dの得意な配列演算をSIMDを使ってブーストしよう
ってただそれだけだと思う
607デフォルトの名無しさん:2013/05/25(土) 12:28:08.06
次世代ゲーム機がx86-64なおかげでついにゲームで採用されたな

http://lists.puremagic.com/pipermail/digitalmars-d/2013-May/164167.html

DConfのスライドを見た感じC++のエンジンをDで呼び出すいいとこ取り手法
http://dconf.org/talks/evans_1.html
608デフォルトの名無しさん:2013/05/25(土) 13:30:48.16
こういうの見るとGC大丈夫なんか?と反射的に思うけどそういえばXNAだとC#で開発とか言ってるし
実際問題どういう感じなんだろ?
609デフォルトの名無しさん:2013/05/25(土) 13:44:25.98
せめて書いてあることを読む努力くらいしよう
610デフォルトの名無しさん:2013/05/25(土) 14:26:27.33
アメリカ語なんてよめねーよks
611デフォルトの名無しさん:2013/05/25(土) 14:40:06.65
脊髄反射もアレなので頑張って読んでもらった、Google翻訳に

GC避けるのめどい
GC殺すよ
GC使おうとしたら警告出るスイッチをつけたい
@nogcとか

つまり大丈夫じゃないってことか
612デフォルトの名無しさん:2013/05/25(土) 21:05:32.51
処理が止まらないGC実装してくれ
613デフォルトの名無しさん:2013/05/25(土) 21:09:03.24
メモリをロックする以上は難しい気がするけど。
トランザクショナルメモリに期待か?
614デフォルトの名無しさん:2013/05/25(土) 21:46:30.55
げーむにはつかえなさそうだな
615デフォルトの名無しさん:2013/05/25(土) 22:30:47.25
64コア当たり前って時代にさえなれば・・・・・・
616デフォルトの名無しさん:2013/05/25(土) 23:26:45.54
並列になろうが同期が必要なら止まるだろう
617デフォルトの名無しさん:2013/05/25(土) 23:29:13.53
何スレッドあろうがメモリがロックされたら止まるしかない。
618デフォルトの名無しさん:2013/05/25(土) 23:41:56.97
ダブルバッファリングできるんだったら処理自体は低コストになりそうだけど、メモリ量的に厳しいな。
619デフォルトの名無しさん:2013/05/26(日) 01:53:02.03
早くDはTreadmilGCを実装すべき
620デフォルトの名無しさん:2013/05/26(日) 02:39:27.97
システムプログラミング言語を名乗るからには @nogc は必須
GCの改善はI/F作られてるんだしやりたきゃやってもいいのよ
621デフォルトの名無しさん:2013/05/26(日) 14:37:29.58
newとかのランタイムのメモリ操作使わなきゃGCは走らないんだろ?
622デフォルトの名無しさん:2013/05/26(日) 14:47:40.08
http://www.kmonos.net/alang/d/garbage.html
GC を使う D の操作

phobos の殆ども使えなくなるし、Dを使う意味が全くわからんぜ
623デフォルトの名無しさん:2013/05/26(日) 14:54:21.05
配列操作とかクロージャとかもダメだったはず。
まあnewだけでも(オブジェクトまとめて作ってプールしときゃいいんだけど)
結構避けて書くのめんどいしなー。
624デフォルトの名無しさん:2013/05/26(日) 17:45:43.24
OS書いたときは scope new しか使わなかったなぁ
625デフォルトの名無しさん:2013/05/29(水) 12:26:30.12
2.063
626デフォルトの名無しさん:2013/05/29(水) 15:23:53.10
ktkr!
627デフォルトの名無しさん:2013/05/29(水) 19:33:57.00
betaに入ってなかったOPTLINKの新しいやつが入ってる!
628デフォルトの名無しさん:2013/05/29(水) 22:14:20.05
新optlinkは何が変わったの?
629デフォルトの名無しさん:2013/05/29(水) 22:34:25.95
>>628
>>391-402の辺り
630デフォルトの名無しさん:2013/05/29(水) 22:54:23.12
> 402 :デフォルトの名無しさん:2013/04/14(日) 23:19:45.18
> >>398 のせいかな
> たまに16bitAppがどうの言ってエラーで起動できないことがある

これその後見かけなくなった。何か他の問題だったんだろう
631デフォルトの名無しさん:2013/05/29(水) 23:01:57.42
2.063で試したら連想配列のキーが見つからないみたいなのもなくなった
でも Error 168: >64K Global Types とか出る…これは仕方ないように見えるなぁ
632デフォルトの名無しさん:2013/05/30(木) 03:46:06.89
optlinkがなんかエラー出た記憶が無いからみんなが何の話してるのか全くわからない・・・
633デフォルトの名無しさん:2013/05/31(金) 20:57:01.85
近所の本屋を5件くらい回ったけどいまだに日本語TDPLが見つからない
売り切れすぎだろ…凄い人気だぜ
634デフォルトの名無しさん:2013/05/31(金) 21:12:35.35
ああ、凄い人気だ……
世はまさにD言語時代
635デフォルトの名無しさん:2013/05/31(金) 21:55:41.40
売れないから入荷してないだけだろ
おまいら現実を見ろよ
ttps://twitter.com/repeatedly/status/340341722791936001
636デフォルトの名無しさん:2013/05/31(金) 22:54:23.83
Sugeeeeeee
637デフォルトの名無しさん:2013/06/01(土) 10:34:06.90
最強言語になれそうなの?これ
638デフォルトの名無しさん:2013/06/01(土) 11:03:10.33
GC切れるようにならないとムリ
639デフォルトの名無しさん:2013/06/01(土) 11:13:11.52
andreiがGCフリーやってるって言ってたし
密かにGCフリー標準ライブラリも整備されつつあるからいける
多分いけると思う
いけるんじゃないかな
640デフォルトの名無しさん:2013/06/01(土) 11:58:58.71
そして年月がたち、GCフリーの new phobos が生まれた
人々は歓喜した
だが人々はやがて、そのライブラリがひどく使いにくいことに気づいた

そして年月がたち、Tango というライブラリが生まれ、人々は満足したという
641デフォルトの名無しさん:2013/06/02(日) 20:11:23.92
win7のdmdでコンパイルしたexeファイルを仮想PCのXPに持ってって実行すると、
有効なWin32アプリケーションじゃないとか言われるんだけど、なにこれ?
D言語ってXPで実行できないの?
642デフォルトの名無しさん:2013/06/02(日) 20:25:24.55
manifest
643デフォルトの名無しさん:2013/06/02(日) 20:31:43.45
dmd.2.063
644デフォルトの名無しさん:2013/06/02(日) 21:11:08.40
特に何もしなくても動くはず
そもそも win7でも動かなかったりして
645デフォルトの名無しさん:2013/06/02(日) 22:19:16.02
リンカでサブシステムをNT5.0にするとかそんなんだ
646デフォルトの名無しさん:2013/06/02(日) 23:02:00.75
GUIアプリなら↓をつけてくれってのはあるけど、つけないと動かないってほどのものでもない
-L/exet:nt/su:windows:4.0
647デフォルトの名無しさん:2013/06/02(日) 23:55:57.78
いや、デフォでもっと上のバージョンがついちゃうようになったんだよ、たしか。
なのでXPだと動かないって弾かれる。
うろ覚えだ
648デフォルトの名無しさん:2013/06/03(月) 00:18:19.33
mainなしだと警告だけで実行できないファイルが出来る
という罠の気がしてならない
649デフォルトの名無しさん:2013/06/03(月) 00:21:02.02
650デフォルトの名無しさん:2013/06/03(月) 04:32:07.06
>>641
xpの上でdmdでコンパイルしたらどうなんの
651デフォルトの名無しさん:2013/06/03(月) 13:28:19.46
-c と -of つけてビルドしたらまた実行できないEXEが出来た
このへんアマアマだな
652デフォルトの名無しさん:2013/06/03(月) 14:18:45.87
-cつけてんだからリンクしてないんだよね
それ単にexeって拡張子をわざわざ指定してobj吐かせてるんじゃないの?
653デフォルトの名無しさん:2013/06/03(月) 14:51:06.60
わろた
objファイルすら理解してない人がなんでD言語にたどり着いたんだろ?
654デフォルトの名無しさん:2013/06/03(月) 14:56:35.21
そうか obj名を変えるのは別のオプションだと思ってたんだよ まあいいや
拡張子を変えられる機能はいらぬ いらぬのだ
655デフォルトの名無しさん:2013/06/04(火) 03:09:31.31
>>653
俺を含む5,6年前の都立大生のはじめて触れるプログラミング言語はDだった
俺は今でもDしか書けない
656デフォルトの名無しさん:2013/06/05(水) 13:17:15.40
candydocみたいにドキュメント加工してくれるので
これより新しいプロジェクトってどこかにある?
657デフォルトの名無しさん:2013/06/05(水) 17:14:19.47
このスレのみなさんから見てこの本は良いですか?
http://www.amazon.co.jp/dp/4798131105
658デフォルトの名無しさん:2013/06/05(水) 19:21:21.43
その本の真髄は、Andreiがなにを考えて言語を設計したのか書いてあるところ。
自分が言語とかフレームワークを設計するときに参考になる部分も多いと思うよ。
D言語関係なくおすすめ
http://dusers.dip.jp/modules/wiki/?Articles%2FTDPL%20-%20Concurrency%20in%20D
↑を見て興味があったら買えばいいんでね
659デフォルトの名無しさん:2013/06/06(木) 07:31:49.36
テンプレート構造体 Foo の Foo!S から Foo!T への暗黙変換を定義したい場合はメンバに何を実装したらいいですか?
void func(Foo!T val) みたいな関数に Foo!S を明示的に変換しないで渡したいです。
660デフォルトの名無しさん:2013/06/06(木) 14:40:57.56
>>659
C++の暗黙の型変換みたいな事はたぶんできない。
funcをいじるか、明示的に変換してからfuncに渡すかしかないと思う。
661デフォルトの名無しさん:2013/06/06(木) 21:33:43.79
662デフォルトの名無しさん:2013/06/07(金) 17:00:02.30
判る方いらっしゃったら解決方法を教えてください

ここを見ながらDでWin32APIを使おうとしているのですが
http://www.kmonos.net/alang/wnd/topics/winapi.ja.html

OPTLINK (R) for Win32 Release 8.00.8
Copyright (C) Digital Mars 1989-2010 All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
test_main.obj(test_main)
Error 42: Symbol Undefined _D5win327winuser11WNDCLASSEXA6__initZ
--- errorlevel 1

というエラーがでてリンクできません

Bindings for the Windows API はこちらのもの
http://www.dsource.org/projects/bindings/wiki/WindowsApi
http://www.dsource.org/projects/bindings/browser/trunk
から
Zip Archive
をダウンロードしています

Dのバージョンは
Digital Mars D Compiler v2.050
です
663デフォルトの名無しさん:2013/06/07(金) 17:07:57.00
win32自体ビルドして一緒にリンクしないとダメなはず
一緒にmakefile入ってるんで、mingw32-makeとか(たぶんDigitalMarsMakeじゃムリ)で
lib作ってtest_mainコンパイルする時に一緒に渡してあげればいい。
あと関係ないけどdmdは新しくしたほうがいい。
664デフォルトの名無しさん:2013/06/07(金) 17:16:00.85
budとかのビルドツール使うと自動でやってくれるよ
665デフォルトの名無しさん:2013/06/07(金) 17:16:18.38
ありがとうございました。
666デフォルトの名無しさん:2013/06/07(金) 20:58:59.41
>>662
win32apiのなかにビルド用のbatがあるはず
それ叩けばwin32.libができるからリンクすればOK

要するに「構造体の実態がないんですけど^^;」ってこと
667デフォルトの名無しさん:2013/06/07(金) 21:29:11.81
0クリアとかsizeofみたいな単純な初期化がついてるせいかな
ころして自分で書いてしまうのがてっとり早かったりするけど
668デフォルトの名無しさん:2013/06/07(金) 22:06:01.38
質問です。
import std.c.windows.windows;
だけでも Win32API は使えるみたいですが、
import win32.core;
import std.c.windows.windows;
とかすると、
二重定義?みたいなエラーになります。
std.c.windows.windows は、いらない子なんでしょうか?
なんで標準に余計なものがついてるんでしょう?
669デフォルトの名無しさん:2013/06/07(金) 22:46:18.27
標準だとそれしかついてないんじゃね?
むしろwin32.coreとか使ったことない
670デフォルトの名無しさん:2013/06/07(金) 22:51:47.54
マルチしてるゴミがご迷惑をおかけしておりますが
以後スルーしてやってください
671デフォルトの名無しさん:2013/06/07(金) 23:28:21.73
import std.c.windows.windows;
は標準ライブラリとかで必要な最低限のやつが適当に書いてあるだけ
中途半端な上に干渉するから邪魔
672デフォルトの名無しさん:2013/06/07(金) 23:33:50.07
そのくせ標準ライブラリの中ではそれ使わずに直接宣言しちゃってるという始末
673デフォルトの名無しさん:2013/06/07(金) 23:34:22.01
>>668
ソース見るとわかるけど、内部でcore.windowsをpublic importしてる
ランタイムがphobosに依存しないようにするためにそうなってて、どっち使ってもほとんど同じ
どのみちunicode関数が全然ないから自分で宣言してAPI叩いた方がいい
674デフォルトの名無しさん:2013/06/07(金) 23:56:43.83
>>673
>unicode関数が全然ない
Version条件指定で、Unicode指定しないからでしょ
675デフォルトの名無しさん:2013/06/08(土) 14:46:49.30
>>974
いつのまにphobosでW系関数がつかえるようになったのだ(・Д・;)
676デフォルトの名無しさん:2013/06/08(土) 16:12:41.69
>>663
dmd新しくしたら

test_main.d(145): Error: cannot implicitly convert expression (& WndProc) of typ
e extern (Windows) int function(void* wnd, uint msg, uint wp, int lp) to extern
(Windows) int function(void*, uint, uint, int) nothrow

ってエラーが出るようになりました

なので関数を

extern(Windows) LRESULT WndProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp) nothrow
{

}

って書き直したら今度は

test_main.d(106): Error: function test_main.WndProc 'WndProc' is nothrow yet may throw

って言われます

もう嫌です><
677デフォルトの名無しさん:2013/06/08(土) 16:50:57.32
try〜catchで囲むとかして、例外が関数の外に飛ばないようにしないと、nothrow付けさせてくれないでしょ
678デフォルトの名無しさん:2013/06/08(土) 17:12:12.44
古いコンパイラで事足りてるならそれでいいじゃない

まあ WndProcがnothrowに変わってウザいのは同意だけど
679デフォルトの名無しさん:2013/06/08(土) 18:15:02.28
ネイティブなC関数(Cライブラリとかの)を宣言するときってnothrowにしとかないと危ない?
680デフォルトの名無しさん:2013/06/08(土) 18:51:48.82
D以外へ渡すコールバック関数はnothrowしないと
相手側の都合を考慮しない乱暴な例外の巻き戻しが起こるんじゃないかな
681デフォルトの名無しさん:2013/06/08(土) 19:05:23.62
>>674
いつのまにphobosでW系関数がつかえるようになったのだ(・Д・;)
682デフォルトの名無しさん:2013/06/08(土) 23:19:48.50
>>681
ごめんwin32の話と勘違いしてた
683デフォルトの名無しさん:2013/06/09(日) 13:21:51.61
とりあえず win32.lib とやらは使わずに
phobos ? のみ import std.c.windows.windows; だけの方で
W系の関数を自分で extern(Windows) でダラダラ書いていけば
Win32API を使えることは確認できました

しかし激しく面倒なので >671 さんのおっしゃるように phobos ? は無視して
import win32.core; で行くことにしたのですが
今度はコンパイルすら通らなくなってしまいました><

>676 と同じなのですが

>Bindings for the Windows API はこちらのもの
>http://www.dsource.org/projects/bindings/wiki/WindowsApi
>http://www.dsource.org/projects/bindings/browser/trunk
>から


これ最新版ですよね?
dmd 2.063
にしてからは

test_main.d(107): Error: BeginPaint is not nothrow
test_main.d(108): Error: GetClientRect is not nothrow
test_main.d(109): Error: EndPaint is not nothrow
test_main.d(113): Error: PostQuitMessage is not nothrow
test_main.d(117): Error: DefWindowProcW is not nothrow
test_main.d(90): Error: function test_main.WndProc 'WndProc' is nothrow yet may throw

がいっぱい出てきて
余計に面倒になったのですが
Bindings for the Windows API の nothrow になってるやつはまだないんですか?
684デフォルトの名無しさん:2013/06/09(日) 13:28:24.54
とりあえずWndProc全体をtry...catchで囲んで例外握りつぶせば?
685デフォルトの名無しさん:2013/06/09(日) 14:36:26.37
>>683

逆にwndprocからnothrow外せばいいんじゃね
どのみち例外出たらアプリごと死ぬんだし
686デフォルトの名無しさん:2013/06/09(日) 14:38:42.58
extern(Windows) LRESULT WndProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp) nothrow
{

}

とは別に

extern(Windows) LRESULT WndProcNoThrow(HWND wnd, UINT msg, WPARAM wp, LPARAM lp);

を宣言だけして

wc.lpfnWndProc = cast(typeof(WndProcNoThrow)*)&WndProc;

したらうまくいきました
ほんとうにありがとうございました
687デフォルトの名無しさん:2013/06/09(日) 14:39:52.34
ああ
間違いです

extern(Windows) LRESULT WndProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp)
{

}

とは別に

extern(Windows) LRESULT WndProcNoThrow(HWND wnd, UINT msg, WPARAM wp, LPARAM lp) nothrow;

を宣言だけして

wc.lpfnWndProc = cast(typeof(WndProcNoThrow)*)&WndProc;

したらうまくいきました
ほんとうにありがとうございました
688デフォルトの名無しさん:2013/06/09(日) 14:40:48.70
>>685
入れ違いになりました
すみません
689デフォルトの名無しさん:2013/06/09(日) 16:54:21.01
馬鹿には無理
690デフォルトの名無しさん:2013/06/09(日) 19:31:54.87
dmd2 で質問です
lib.exe で 既存の .lib ファイルに .obj を追加すると
.bak ファイルが作られてしまうのですが
これを抑制するのはどのオプションでしょうか?
691デフォルトの名無しさん:2013/06/09(日) 20:10:03.69
OSはなに
692デフォルトの名無しさん:2013/06/09(日) 23:22:56.57
C言語超えれるの?
693デフォルトの名無しさん:2013/06/10(月) 04:21:31.96
Dが流行らない理由の一部を垣間見た気がする
694デフォルトの名無しさん:2013/06/10(月) 09:11:21.51
質問いいですか?
695デフォルトの名無しさん:2013/06/10(月) 11:11:54.19
解決しました
ありがとうございました
696デフォルトの名無しさん:2013/06/10(月) 19:02:24.51
Dは弱参照の実装を諦めちゃったのかな・・・

Dを仕事で使いたいけど、踏み出せない
IDEがしょぼそうだし・・・
697デフォルトの名無しさん:2013/06/10(月) 19:15:51.92
弱参照って、参照カウンタ型GCに関連したものだと思うけど
今のDは参照カウンタ型じゃないよね。要るの?
698デフォルトの名無しさん:2013/06/10(月) 19:19:17.64
弱参照って参照もしたいけどGCもされるようにしたいってのだろ
どこで勘違いしたんだ
699デフォルトの名無しさん:2013/06/10(月) 19:32:56.04
ああ、なるほど
参照カウンタ型だと循環参照を解決できないから要るのだと思ってた
700デフォルトの名無しさん:2013/06/10(月) 19:47:37.28
GCのインターフェースの仕様ってどっかにドキュメントあったりする?
↓コレを実装して組み込んでみるつもり
http://almond.cs.uec.ac.jp/papers/pdf/2011/fit2011_ozawa.pdf
701デフォルトの名無しさん:2013/06/10(月) 23:51:13.80
弱参照がないとキャッシュを実装できない
JavaとC#にできて、Dにできないという状況を受け入れるのだろうか?
702デフォルトの名無しさん:2013/06/11(火) 00:19:13.70
DのGCが探索しない領域(malloc)に参照を登録しといて、デストラクタで登録削除
という方法は無理なのかな
703デフォルトの名無しさん:2013/06/11(火) 00:32:14.86
Dのデストラクタさんは基本的に仕事しない人
704デフォルトの名無しさん:2013/06/11(火) 00:39:54.36
だよねぇ
GCに回収されるように出来ても、後始末出来ないのじゃ駄目だな
705デフォルトの名無しさん:2013/06/11(火) 01:55:13.65
デストラクタが仕事しないのに何か理由ってあるの
706デフォルトの名無しさん:2013/06/11(火) 02:01:26.51
GCの気まぐれで起動される=役に立つことがまれ
707デフォルトの名無しさん:2013/06/11(火) 04:03:16.81
C#におけるDispose()にあたるモノはないのか?
708デフォルトの名無しさん:2013/06/11(火) 04:57:12.18
無理やりメモリ使い切ったらGC始まるんじゃね
709デフォルトの名無しさん:2013/06/11(火) 07:38:28.46
mixin template と template で宣言するのは何が違うの?
710デフォルトの名無しさん:2013/06/11(火) 08:21:39.42
同じだと思う理由がわからない
711デフォルトの名無しさん:2013/06/11(火) 14:04:10.73
mixinしかできなくなるだけで他は同じでしょ?
712デフォルトの名無しさん:2013/06/11(火) 15:05:05.84
ふと気になって試してみたけど文字列mixinもできるのな
713デフォルトの名無しさん:2013/06/11(火) 15:30:27.85
宣言そのもののために使われるのがmixinで
通常テンプレートは宣言の一部とか関数呼び出しの一部として使われるもの
714デフォルトの名無しさん:2013/06/11(火) 15:33:59.48
http://www.kmonos.net/alang/d/phobos/std_datetime.html
このサイトのサンプルで、

import std.datetime;
void main(string[] args){
auto currentTime = Clock.currTime();
auto timeString = currentTime.toISOExtendedString();
auto restoredTime = SysTime.fromISOExtendedString(timeString);
}

をコンパイルしようとすると、

Error: no property 'toISOExtendedString' for type 'SysTime'
Error: no property 'fromISOExtendedString' for type 'SysTime'
Error: SysTime is not an expression

って怒られます。
715デフォルトの名無しさん:2013/06/11(火) 15:39:23.51
>>714
ttp://www.kmonos.net/alang/d/changelog.html

The deprecated toISOExtendedString and fromISOExtendedString functions
in std.datetime have been removed. Please use toISOExtString and fromISOExtString instead.

The toISOExtendedString and fromISOExtendedString functions
on SysTime, Date, TimeOfDay, and DateTime in std.datetime have been deprecated.
Please use toISOExtString and fromISOExtString instead.
716デフォルトの名無しさん:2013/06/11(火) 15:46:37.51
717デフォルトの名無しさん:2013/06/11(火) 15:52:49.14
>>714
日本語サイトの更新はだいぶ滞っているので古いコンパイラ(2.052くらい)を使うか
該当する英語ページで確認するのが鉄則
718デフォルトの名無しさん:2013/06/11(火) 16:12:13.67
MSDNの日本語版よりまし。
719デフォルトの名無しさん:2013/06/11(火) 16:27:03.40
ていうか >>714 のサイトの内容英語じゃね
どうせ英語のまま掲載するなら
本家サイトにリンクしとけばいいのに
なに無駄なことしてんの
720デフォルトの名無しさん:2013/06/11(火) 16:51:40.74
馬鹿には無理
721デフォルトの名無しさん:2013/06/11(火) 18:17:10.54
Dで書くとC/C++で書いてたときに比べてコードが綺麗になる(気がする)ね
722デフォルトの名無しさん:2013/06/11(火) 21:47:36.56
てか、最近のC++はどう書いても横長になる。
横幅意識するとautoとtypedefが並びまくる。
プロはどう書いてるんだろう?とか思ってboostのソース開くと
気が遠くなっていつの間にか翌朝になってるorz
723デフォルトの名無しさん:2013/06/11(火) 22:01:51.52
boostは割と動けば良かろうな変態的なコードが多いからな
724デフォルトの名無しさん:2013/06/11(火) 22:51:29.83
ヘッダの中に無理に押しこむコードが参考になるのか
725デフォルトの名無しさん:2013/06/12(水) 00:12:56.41
C++のテンプレートはなあ…ヘッダに押し込まないと使い物にならんのは問題よね
726デフォルトの名無しさん:2013/06/12(水) 07:45:43.06
楽をしようと思ってDに手を出してみたけど
率直な感想を言うと期待してたほど楽じゃなかった
確かにC/C++より先進的だしコードも綺麗だし
STLやBoost使うよりストレス溜まらないけど
まだまだ獣道どころか茨の道って感じがする
もっと高速道路みたいなのをイメージしてた
まあ環境揃ってくればそうなるんだろう
もうちょっと付き合ってみるよ
727デフォルトの名無しさん:2013/06/12(水) 07:47:18.45
Dに来るのが10年早かった。
728デフォルトの名無しさん:2013/06/12(水) 07:50:28.99
>>715
ありがとうございました。
原因が判らず、import date; して見たり、 import core.time; して見たり、
色々無駄に時間を使ってしまいました。

>>717
そのようですね。
英語苦手ですけど、出来るだけ英語の方見るようにします。
729デフォルトの名無しさん:2013/06/12(水) 07:55:51.26
import date;
じゃなくて、
import std.date;
です。
730デフォルトの名無しさん:2013/06/12(水) 07:57:12.49
>>726
ここは、獣道や茨の道を歩むのが好きなひとの集まる板だと思います。
731デフォルトの名無しさん:2013/06/12(水) 08:05:07.60
732デフォルトの名無しさん:2013/06/12(水) 08:13:24.76
>>726-727
そこは、ほら、
ビジネスチャンス(嘲)
ですよ。
733デフォルトの名無しさん:2013/06/12(水) 11:24:21.29
Dの一番の弱点は検索性だと思う。
もう名前からしてググりにくいし、ググると互換のない新旧が混ぜこぜに出てくるし
しかも新しい情報ほど数が少ないし、日本語の情報に至っては・・・・・・
どこか一段落した時点でググりやすい名前に変えてほしいよ。
734デフォルトの名無しさん:2013/06/12(水) 19:44:57.04
C#「Dとかだっせーよな」
Go「検索しづらいもんな」
F#「実際情報も少ないし」
735デフォルトの名無しさん:2013/06/12(水) 19:47:28.15
"D lang"
736デフォルトの名無しさん:2013/06/12(水) 21:16:54.41
bindings の sqlite3-d が dmd 2.063 だとコンパイルエラーになるので
野良 sqlite3.d と sqlite3_bindings.d を拾って来てやっと読み書きでけた
もしかして bindings って放置プレイ中?
737デフォルトの名無しさん:2013/06/12(水) 21:52:37.10
>>734
D-lang
738デフォルトの名無しさん:2013/06/12(水) 22:48:40.35
phobos の etc.c.sqlite3 ではイカんのか?

どっちも使ったことないけど
739デフォルトの名無しさん:2013/06/12(水) 23:20:59.00
え、そんなのあったんだ
740デフォルトの名無しさん:2013/06/13(木) 07:21:40.95
>>738
ありがとうございます

http://dlang.org/phobos/etc_c_sqlite3.html
ぱっと見ただけですが
C 用の API を D に置き換えただけっぽいですね
なんとなく取扱いが面倒そうです

ちなみに野良 sqlite3.d と sqlite3_bindings.d はこっちです
https://github.com/bayun/SQLite3-D
こちらはオブジェクト指向的な使いやすさを感じます

とりあえず後者でうまくいってるのでそのまま逝きます
機会があれば前者も試してみたいと思います
741デフォルトの名無しさん:2013/06/13(木) 14:36:01.71
公式のいいところはdmdのバージョンが上がっても
コンパイルが(基本的には)通ること……。
742デフォルトの名無しさん:2013/06/13(木) 19:18:52.75
と思うじゃん?
743デフォルトの名無しさん:2013/06/13(木) 21:01:53.75
まあ通らんのがあってもサードパーティと違って
完全放置はされないことくらいは期待できる。
744デフォルトの名無しさん:2013/06/13(木) 22:30:17.06
-property導入当初にエラーだったのも次のリリースでは直ってた気がする
745デフォルトの名無しさん:2013/06/13(木) 23:27:13.55
そして次のリリースではdeprecated になり
その次で新モジュールに置き換わっている
746デフォルトの名無しさん:2013/06/14(金) 00:45:09.34
>>743
サードパーティなら完全放置と割り切って
さっさと見切って自分で修正すればいいけど
公式だと対応してくれる気がするのが却って良くない
はっきり言ってDの場合はそれが仇になる
747デフォルトの名無しさん:2013/06/14(金) 18:30:00.48
foreachの自動ベクトル化まだー?
ループ内のコードをSSE使うインラインアセンブラに書き換えるプリプロセッサ作ってたけどフロントエンドの最実装になって不毛だ
748デフォルトの名無しさん:2013/06/15(土) 00:33:51.79
>>726が言ってる
C++に比べ、Dが楽じゃない所ってなんだろう?
C++のあのクソさよりもDがクソな点・・・なんだろう?
749デフォルトの名無しさん:2013/06/15(土) 01:07:36.57
>期待してたほど楽じゃなかった
750デフォルトの名無しさん:2013/06/15(土) 01:51:40.67
他の言語へのヘイトはどっか他のとこで吐こうぜ
751デフォルトの名無しさん:2013/06/15(土) 02:02:30.12
話の流れからして今Dへのヘイトを探してるところじゃね
752デフォルトの名無しさん:2013/06/15(土) 03:37:09.21
GCがクソって話と人口が過疎って話は昔から
753デフォルトの名無しさん:2013/06/15(土) 07:45:26.37
GCの動くタイミング制御できれば何も文句はないんだけどなあ
754デフォルトの名無しさん:2013/06/15(土) 08:33:45.19
>>748-749
ライブラリの不備とかバグとか
日本語ドキュメントがいい加減とか
GUIフレームワークのインストールが面倒とか
755デフォルトの名無しさん:2013/06/15(土) 11:32:08.20
そもそもまともに使えるGUIフレームワークが

日本語ドキュメントは一人でやるのがそもそも限界だったんやろな…
すげぇお世話になったけど最近見てないな
756デフォルトの名無しさん:2013/06/15(土) 12:22:39.44
757デフォルトの名無しさん:2013/06/15(土) 12:45:54.76
すみません
disりたいお年頃なんです
758デフォルトの名無しさん:2013/06/15(土) 12:52:16.66
本家の英語サイトでも間違ってるもんなぁ
http://dlang.org/phobos/std_net_curl.html

string content = get("dlang.org");

↓このままだと

test_main.d(LINEno): Error: cannot implicitly convert expression (get(cast(const(char)[])"dlang.org", AutoProtocol())) of type char[] to string

src\phobos\std\range.d(611): Error: static assert "Cannot put a const(dchar) into a Appender!(char[])"
src\phobos\std\format.d(2160): instantiated from here: put!(Appender!(char[]), const(dchar))
src\phobos\std\format.d(2207): instantiated from here: formatChar!(Appender!(char[]))
src\phobos\std\typecons.d(581): instantiated from here: formatElement!(Appender!(string), char[], char)
src\phobos\std\net\curl.d(1873): ... (4 instantiations, -v to show) ...
src\phobos\std\net\curl.d(374): instantiated from here: get!(FTP, char)

test_main.d(LINEno): instantiated from here: get!(AutoProtocol, char)

我慢出来るひとはマゾだと思う
759デフォルトの名無しさん:2013/06/15(土) 12:58:23.18
一応

string content = cast(string)get("dlang.org");

で解決してます
760デフォルトの名無しさん:2013/06/15(土) 13:06:50.86
assumeUniqueかidupしたげてください
761デフォルトの名無しさん:2013/06/15(土) 13:11:34.27
馬鹿には無理
762デフォルトの名無しさん:2013/06/15(土) 13:36:04.07
string content = cast(immutable)get("dlang.org");

でいけました
ほんとうにありがとうございました
763デフォルトの名無しさん:2013/06/15(土) 14:07:49.11
char[] content = get("dlang.org");
でよくね?
764デフォルトの名無しさん:2013/06/15(土) 14:54:41.64
なるほど、流行らないわけだ
765デフォルトの名無しさん:2013/06/15(土) 15:31:42.68
無理して使うことはないよ。
766デフォルトの名無しさん:2013/06/15(土) 15:57:10.59
まったくだw
767デフォルトの名無しさん:2013/06/15(土) 16:05:36.56
まともに使えるGUIフレームワークが無いのは判りましたが
どれが一番マシですか?
ここで質問して答えがもらえるのを教えてください
768デフォルトの名無しさん:2013/06/15(土) 16:14:17.52
http://vipprog.net/wiki/prog_lang_list.html
ちなみにC言語の後継のひとつにD言語があるが、このサイトではマイナー言語にすら取り上げられないほど超マイナーな存在である。
769デフォルトの名無しさん:2013/06/15(土) 16:17:45.77
D言語普及の最大の阻害要因は
GUIフレームワークの不出来のせいだと思う
770デフォルトの名無しさん:2013/06/15(土) 16:45:09.55
>>767
OS標準と見た目が違うのと超重量DLLとか同梱しまくるのに我慢できる→GtkD
JavaっぽいAPIと実行ファイルが重量級になるのに我慢できる→DWT
771デフォルトの名無しさん:2013/06/15(土) 16:45:44.43
肝心の
Windows限定と若干の機能不足に我慢できる→DFL
を忘れてた
772デフォルトの名無しさん:2013/06/15(土) 16:57:34.64
wxDの評判がよさそうなのでwxDから試してみます
773デフォルトの名無しさん:2013/06/15(土) 17:13:05.10
コンパイルできることで一時代を築いたQtDはいまどうなってるんだろう
774デフォルトの名無しさん:2013/06/15(土) 18:00:10.49
Dの醍醐味を噛み締められるオリジナルのGUIはまだかっ
775デフォルトの名無しさん:2013/06/15(土) 18:02:39.29
wx\common.d(79): Deprecation: use of typedef is deprecated; use alias instead
wx\common.d(79): Deprecation: use of typedef is deprecated; use alias instead
wx\Event.d(37): Deprecation: use of typedef is deprecated; use alias instead
wx\Event.d(37): Deprecation: use of typedef is deprecated; use alias instead
wx\Log.d(57): Error: module stdarg is in file 'std\stdarg.d' which cannot be read

やっぱりだめか
dmd v2.063 にしたのが間違いだったか
776デフォルトの名無しさん:2013/06/15(土) 18:13:47.49
Version D 2.057 Dec 13, 2011

Deprecate typedef
777デフォルトの名無しさん:2013/06/15(土) 18:15:32.00
今時 GitHub に移ってないプロジェクトは
氏んだとみなすべきかもしれない
778デフォルトの名無しさん:2013/06/15(土) 18:21:28.19
おまいらこんな中途半端の出来損ないに
良く何年も付き合って来たな
ほんとにマゾかも試練
779デフォルトの名無しさん:2013/06/15(土) 18:23:32.99
780デフォルトの名無しさん:2013/06/15(土) 18:24:29.43
なんでわざわざこんな僻地荒らしにくるの……
781デフォルトの名無しさん:2013/06/15(土) 18:27:05.21
無理して使うことはないよ。
782デフォルトの名無しさん:2013/06/15(土) 18:31:19.80
まったくだw
783デフォルトの名無しさん:2013/06/15(土) 19:43:14.78
>>779
やったじゃん
頑張って対応してpullを送れば無駄にならない
784デフォルトの名無しさん:2013/06/15(土) 19:59:22.56
wx\common.d(79): Deprecation: use of typedef is deprecated; use alias instead
wx\common.d(79): Deprecation: use of typedef is deprecated; use alias instead
wx\Event.d(37): Deprecation: use of typedef is deprecated; use alias instead
wx\Event.d(37): Deprecation: use of typedef is deprecated; use alias instead

この二件は typedef を alias に置き換えるだけで解決

wx\Log.d(57): Error: module stdarg is in file 'std\stdarg.d' which cannot be read

なぜか上を解決したらこの行は出なくなった

ところが今度は

wx\DbGrid.d(148): Error: undefined identifier DataSet, did you mean function dataSet?
wx\DbGrid.d(201): Error: undefined identifier DataSet, did you mean function dataSet?
wx\DbGrid.d(202): Error: undefined identifier DataSet, did you mean function dataSet?
wx\DbGrid.d(382): Error: undefined identifier DataRow

なんでだろ〜
785デフォルトの名無しさん:2013/06/15(土) 20:17:52.92
wx\Log.d(57): Error: module stdarg is in file 'std\stdarg.d' which cannot be read

が出なくなった理由は

>>775 のときの wxd (wxd-016) の source を使うのをやめて捨てて
>>779 (wxd-016-afb) のを fork し直したのが原因だった

何かが違うらしい orz
786デフォルトの名無しさん:2013/06/15(土) 20:25:01.80
馬鹿には無理
787デフォルトの名無しさん:2013/06/15(土) 22:01:35.36
どうやらそのようです
788デフォルトの名無しさん:2013/06/15(土) 22:13:18.05
頑張って対応したお
エラー出て解決方法不明のコントロールはlibに追加しないで
wxd.lib再構築したらうまくいった
自分で使う分にはこれで良いのでpullは送らずに自己満足しておきます
789デフォルトの名無しさん:2013/06/15(土) 22:13:50.95
ウィンドウ閉じるとコンソールに
core.exception.InvalidMemoryOperationError
って出て終了するな・・・
790デフォルトの名無しさん:2013/06/15(土) 22:45:15.85
日記ならblogにでも書いてろよ
791デフォルトの名無しさん:2013/06/15(土) 22:59:43.78
こういうのは参考になるんだけどな
まあpull request送るのが最適だと思うけど
792デフォルトの名無しさん:2013/06/15(土) 23:32:00.67
まず解決しないとpull requestもなにもないような
793デフォルトの名無しさん:2013/06/16(日) 00:52:26.01
なんでDのexeってこんなでかくなるんだろ
もしかしてwxDってstaticlinkのみ?
794デフォルトの名無しさん:2013/06/16(日) 02:33:41.11
wxDは静的リンクでしか使ったことないな
795デフォルトの名無しさん:2013/06/16(日) 08:28:14.18
debug build というオチ?
796デフォルトの名無しさん:2013/06/16(日) 09:27:24.22
InvalidMemoryOperationError の原因は多分、
リソースの破棄を自前でやるべきところを忘れているせい
797デフォルトの名無しさん:2013/06/16(日) 11:03:35.74
最近D言語に否定的な奴が常駐してるよね
使わなければいいのに
どっから来たんだこいつら
798デフォルトの名無しさん:2013/06/16(日) 11:28:55.58
火星からの侵略に心を痛める木星人
799デフォルトの名無しさん:2013/06/16(日) 12:35:34.12
>>784 >>788
DbGrid.d ていうのはメイクファイルから除外するのが正解っぽい

しかしメイクファイルに該当する定義ファイルが無駄にたくさんあって
対策されてる奴とされてない奴が混じってる これはひどい
800デフォルトの名無しさん:2013/06/16(日) 13:16:46.43
>>797
本が出たりFacebookでカンファレンス開催されたり普及の兆しが見え始めたからね

MS・Apple・Googleが揃ってしまった分野でのマイナー製品スレは何故か荒れていく法則(例:ブラウザ)
801デフォルトの名無しさん:2013/06/16(日) 13:48:06.57
>>786みたいな文言の否定は同時期に他のスレでも見たことあるし一部は板に取り憑いた荒らしなんだとは思うよ
802デフォルトの名無しさん:2013/06/16(日) 15:03:06.41
Dマスコットのフォルムの美しさに嫉妬しているのであろう
803デフォルトの名無しさん:2013/06/16(日) 17:03:26.60
>>796
app.cppにバグがあるという情報が見つかりました
804デフォルトの名無しさん:2013/06/16(日) 19:40:58.69
D言語で作られた役に立つアプリが出てこない理由は
やっぱりGUIライブラリなのかな・・・
805デフォルトの名無しさん:2013/06/16(日) 19:50:47.26
エンドユーザーの役に立つだけでいいなら既に整ったライブラリ使ってちょっと作るほうが楽ですし
806デフォルトの名無しさん:2013/06/16(日) 20:10:14.91
Qtは知らんけど
wxは本来C++のフレームワークなのに
テンプレやインターフェースに互換性ないから
わざわざCのwrapper経由して接続してるのね
807デフォルトの名無しさん:2013/06/16(日) 21:17:12.65
DWTいいよ
全部Dで書かれてるからいいよ
ちょっとバイナリが3MB超えるくらい安いもの
808デフォルトの名無しさん:2013/06/16(日) 21:54:05.58
DWT って latest release で dmd 1 にしか対応してないのですか
809デフォルトの名無しさん:2013/06/16(日) 22:02:23.14
D2とD1の連携ってどうやるんですかね・・
810デフォルトの名無しさん:2013/06/16(日) 22:07:27.32
残念ですが DWT は検討から外させていただきますた
811デフォルトの名無しさん:2013/06/16(日) 22:12:53.58
812デフォルトの名無しさん:2013/06/17(月) 08:02:21.11
どうして自分で使ってもいないものを他人に薦めるの?
人柱になれということ?
813デフォルトの名無しさん:2013/06/17(月) 10:26:55.71
  日
人木生
814デフォルトの名無しさん:2013/06/17(月) 14:28:17.05
質問です。ある DLL から LoadLibrary するときに、
extern(Windows) UINT function(LPSTR, LPSTR, UINT) HogeFunc;
という関数があるとして、テンプレートを使って、
template TProcAddr(T) {
T get(HINSTANCE hmodule, string funcname){
T func = cast(T)GetProcAddress(hmodule, funcname.toMBSz());
if(!func) throw new Exception(funcname);
return func;
}
}
HogeFunc = TProcAddr!(typeof(HogeFunc)).get(hmodule, "HogeFunc");
と出来ることはわかったのですが、かなり冗長な気がするので、
T getProcAddr(T)(HINSTANCE hmodule, string funcname){
T func = cast(T)GetProcAddress(hmodule, funcname.toMBSz());
if(!func) throw new Exception(funcname);
return func;
}
HogeFunc = getProcAddr(hmodule, "HogeFunc");
と書こうとしたら、コンパイルエラーになりました。
bool SetProcAddress(T)(T *func, HINSTANCE hmodule, string funcname){
*func = cast(T)GetProcAddress(hmodule, funcname.toMBSz());
if(!*func) throw new Exception(funcname);
return true;
}
SetProcAddress(&HogeFunc, hmodule, "HogeFunc");
だと、コンパイル出来ます。
getProcAddrの方法は無理(型情報が確定してても戻り値の型では型推論出来ない?)なのでしょうか?
あと、ついでに、
SetProcAddress(HogeFunc, hmodule);
または、
HogeFunc = getProcAddr(hmodule);
と書ける方法もあったら教えてください。
815デフォルトの名無しさん:2013/06/17(月) 19:52:21.78
>>812
いつから使ってないと錯覚していた?
DWTはWindowsだと安定してるけどlinuxは何かしようとするとバグ踏んだりする
DFLは日本人がforkしたやつが十分安定して使えてたけどそれも数ヶ月前の話だから今はわからない
QtDは数年前に使ってたけどかなり不安定でいつの間にかコンパイルもできなくなってた
wxDは何年も前に安定して使えてたけど今やforkしたやつもコンパイルできない
GtkDはGTKが気に食わなくて使ってないけど一番開発頑張ってそう

基本Windowsの話です
816デフォルトの名無しさん:2013/06/17(月) 20:09:12.83
なんでコンパイル出来ないものをコミットするんだろうねw
817デフォルトの名無しさん:2013/06/17(月) 20:27:30.23
ライブラリ側の変更でコンパイルできなくなるんじゃなく、
コンパイラ側の変更でコンパイルできなくなる
つまりコンパイラと一緒に全力疾走しないライブラリは即置いてかれるのがDの世界
818デフォルトの名無しさん:2013/06/17(月) 20:35:08.51
ということは
ライブラリ側の人は悉く疲れてるんですか
819デフォルトの名無しさん:2013/06/17(月) 21:04:32.54
>>814
HogeFuncをref引数とかにしたら型推論効かないかなあ

>>818
最近破壊的変更が少なくてマシになったと聞いた
820デフォルトの名無しさん:2013/06/17(月) 21:18:45.43
>>814
一応出来た気がするけど、extern(Windows)を付けたときに動きが変わって慌てた
リンケージで間違うと実行時にワケワカメになるからよく確かめてほしい

extern(Windows)
auto getAddressT(R, P... )( R function(P) fn, HINSTANCE hModule, string func)
{ return cast(typeof(fn)) GetProcAddress(hModule, func); }

auto getAddress(string name)(HINSTANCE hModule)
{ return getAddressT(mixin(name), hModule, name); }

...
auto func = getAddress!"HogeFunc"(hModule);
821デフォルトの名無しさん:2013/06/17(月) 22:19:49.42
こんな程度なら黒魔術ではないと思えてしまう自分は普通
822デフォルトの名無しさん:2013/06/18(火) 00:27:14.22
dmd.2.063.2
823デフォルトの名無しさん:2013/06/18(火) 01:31:52.00
呼び出し規約が理解できてないのはアセンブラを授業で教えないのが問題なの
824デフォルトの名無しさん:2013/06/18(火) 03:23:07.72
ありがとうございます
戻り値の型に関してはかなりルーズな言語なんですか
825デフォルトの名無しさん:2013/06/18(火) 04:32:52.81
ああ、
auto HogeFunc = getAddress!"HogeFunc"(hModule);
と HogeFunc 二回書くのがアレなので、

extern(Windows)
auto setAddressT(R, P... )(ref R function(P) fn, HINSTANCE hModule, string func)
{ return fn = cast(typeof(fn)) GetProcAddress(hModule, func); }

auto setAddress(string name)(HINSTANCE hModule)
{ return setAddressT(mixin(name), hModule, name); }

してみたら、
setAddress!"HogeFunc"(hModule);
で、うまくいったでござるよ。
826デフォルトの名無しさん:2013/06/18(火) 07:50:53.97
extern(C) とか extern(Pascal) とかの関数に代入出来ない orz
827デフォルトの名無しさん:2013/06/18(火) 09:57:22.67
元の T* に戻して文字列ミックスインだけ使えばいいんじゃないの
828デフォルトの名無しさん:2013/06/18(火) 10:10:09.48
黒魔術を駆使すれば mangle名の解析から リンケージ属性を取得してミックスインできる気がしてきたww
829デフォルトの名無しさん:2013/06/18(火) 11:34:30.74
std.traits.functionLinkage
830デフォルトの名無しさん:2013/06/18(火) 12:10:24.42
>>827
やってみました。

auto SetProcAddress(string F)(HINSTANCE hmodule){
auto func = cast(typeof(mixin(F)))GetProcAddress(hmodule, F.toMBSz());
if(!func) throw new Exception(F);
return func;
}
SetProcAddress!"HogeFunc"(hmodule);

extern(C) とか extern(Pascal) とか気にせず、コンパイルは通るものの、実行すると、
Access Violation
になります。
たぶん、 >>820 さんのおっしゃってる、
リンケージで間違うと実行時に昆布の状態だと思います。
831デフォルトの名無しさん:2013/06/18(火) 12:16:17.62
>>822がギャグかと思ったら本当だったでござる
832デフォルトの名無しさん:2013/06/18(火) 12:20:12.34
ああ、チョンボしてました。

auto SetProcAddress(string F)(HINSTANCE hmodule){
mixin(F) = cast(typeof(mixin(F)))GetProcAddress(hmodule, F.toMBSz());
if(!mixin(F)) throw new Exception(F);
return mixin(F);
}
SetProcAddress!"HogeFunc"(hmodule);

で、うまくいきました。
ほんとうにありがとうございました。
833デフォルトの名無しさん:2013/06/18(火) 12:38:17.92
それは文字列mixinじゃない
834デフォルトの名無しさん:2013/06/18(火) 13:19:51.69
文字列mixinだよ
835デフォルトの名無しさん:2013/06/18(火) 13:21:26.19
mixin式とmixin文とテンプレートmixin
区別しようね
836デフォルトの名無しさん:2013/06/18(火) 19:31:18.47
>>822
入れてみたけど__VERSION__が変わらない件
837デフォルトの名無しさん:2013/06/18(火) 21:15:28.97
黒魔術って言葉使うってことは…
838デフォルトの名無しさん:2013/06/18(火) 22:19:20.98
わなDの中の人
839デフォルトの名無しさん:2013/06/18(火) 23:26:08.06
>>836
条件コンパイルで使うためのもの
今回はバグ修正しかないから変える必要なし
840デフォルトの名無しさん:2013/06/20(木) 02:01:19.97
class C{
 this(int n){}
}

auto c = new class C{
 this(int n){super(n);}
  void f(){}
}(10); // だめ

無名で継承したクラスのコンストラクタに引数を渡したい場合の書き方ってどうでしたっけ
841デフォルトの名無しさん:2013/06/20(木) 02:07:49.12
auto c = (new class C{
 this(int n){super(n);}
  void f(){}
})(10);
842デフォルトの名無しさん:2013/06/20(木) 02:08:57.33
843デフォルトの名無しさん:2013/06/20(木) 19:30:01.00
curses の D 言語版ってどれですか?
844デフォルトの名無しさん:2013/06/20(木) 19:39:27.66
845デフォルトの名無しさん:2013/06/20(木) 20:01:39.25
あざーっっす
846デフォルトの名無しさん:2013/06/20(木) 21:37:05.21
>>842
なにこのなに・・・

auto c = new class(10) C{
 this(int n){super(n);}
 void f(){}
};
847デフォルトの名無しさん:2013/06/20(木) 22:06:36.38
おまいらjsに毒され杉
848デフォルトの名無しさん:2013/06/20(木) 22:29:30.31
女子高生と女子大生が見る分には可愛いと思う
うるさいから近づきたくないけど
849デフォルトの名無しさん:2013/06/22(土) 11:17:22.12
$type test.d
import std.stdio;

void main() {
foreach (i; 0..5) {
writeln(i);
scope array = new ubyte[500_000_000];
}
}
$ rdmd test.d
0
1
2
core.exception.OutOfMemoryError

これGCさんはどういう仕事してんの?(win7/ubuntu)
850デフォルトの名無しさん:2013/06/22(土) 11:25:04.75
俺の頭がおかしいのかと思ってC#さんで同じこと試してみたが5回だろうが500回だろうが確保成功
話のわかるやつだ
851デフォルトの名無しさん:2013/06/22(土) 11:59:19.44
>>849-850
俺の頭がおかしくなったのかも知れないけど何でscopeで配列を宣言してるの?
ちなみに2.063.2@Mac(16GB)で何の問題も無く実行出来たぞ
本当にメモリが足りなくてC#は足りなくなった瞬間に古いのを捨ててるだけじゃねえよな
852デフォルトの名無しさん:2013/06/22(土) 12:09:58.41
>>849
デカすぎるメモリブロックはあえてGC対象外にされてた気がする

理由はPreciseGCじゃないと無駄だから↓
http://d.puremagic.com/issues/show_bug.cgi?id=9094

4Gに近づくとヤバいって言ってるから 64bitなら通るのかな?
853デフォルトの名無しさん:2013/06/22(土) 12:57:13.27
assumeUniqueしたげてください
854デフォルトの名無しさん:2013/06/22(土) 13:37:37.31
>>851
ああごめん
scopeじゃなくても駄目だったんだけど試しにscopeにしてみたのがそのまんまだった

>>852
今は仕様なのか…ライブラリの中とかで確保されたら詰むなぁ、というかstd.zipで詰んだ
まあ処理系の問題ならまともに動かなくても許してもらえるだろう
ありがとうございます
855デフォルトの名無しさん:2013/06/22(土) 14:09:29.74
>>854
scope(exit)delete array;
856デフォルトの名無しさん:2013/06/22(土) 14:13:47.83
>>855
あれ、普通に効いた
自分のプログラムだとなんか効果が無かったから駄目なのかと思ってた
何か間違えてるっぽいな…

これならなんとかできそうです。ありがとう
857デフォルトの名無しさん:2013/06/22(土) 14:18:18.40
deleteじゃなくてdestroy使えって話なかったっけ
858デフォルトの名無しさん:2013/06/22(土) 14:32:04.58
859デフォルトの名無しさん:2013/06/23(日) 14:01:35.35
こんなページあったんだ
860デフォルトの名無しさん:2013/06/23(日) 17:38:20.33
windows7 / dmd2.063.2 です。

File f = File("日本語.txt");
scope(exit) f.close();

を実行すると、

std.exception.ErrnoException@std\stdio.d(325):
Cannot open file `日本語.txt' in mode `rb' (Invalid argument)

ってなります。
D言語は日本語をサポートしていないのでしょうか?
861デフォルトの名無しさん:2013/06/23(日) 17:38:57.33
ソースファイルは utf-8 で保存してあります。
862デフォルトの名無しさん:2013/06/23(日) 17:47:21.70
ttps://github.com/garlic-flavor/mqo_loader/blob/master/doc/main.html

std.stdio.File が日本語ファイル対応した...と見せかけて DigitalMars の _wfopen が日本語対応してないやん!-&gt;付属の msvcrt.lib をリンクして下さい。

std.stdio ってなんで日本語ファイル名あかんの?
863デフォルトの名無しさん:2013/06/23(日) 17:49:05.22
正しくファイル操作が出来る分std.stream.Fileのほうがマシです
864デフォルトの名無しさん:2013/06/23(日) 17:50:28.40
865デフォルトの名無しさん:2013/06/23(日) 17:51:53.26
std.zip で圧縮ファイル中に日本語ファイルが有ったら終わってるとか何これダサ杉
ttp://d.hatena.ne.jp/haru-s/20050403/1112466536
866デフォルトの名無しさん:2013/06/23(日) 17:59:06.22
fopen系使うのやめろよな・・・マジで
867デフォルトの名無しさん:2013/06/23(日) 17:59:13.73
>>863
std.stream.File 試してみました。

>>860 のコードは最小限で、実際は、
foreach(ubyte[] buffer; chunks(f, bufsize)) md5.update(buffer);
みたいな処理が中にあるのですが、
std.stream.File の方を使うと、

Error: constructor std.stdio.chunks.this (File f, uint size) is not callable using argument types (File, const(uint))

ってなります。
たぶん前者の File f と後者の File が違うんでしょうけど、
std.stream.File で chunks(f, size) や File(filename).byChunk(size) 的なことは可能でしょうか?
条件後出しすみません。
868デフォルトの名無しさん:2013/06/23(日) 18:00:24.82
>>860
サポートしていません
というかウォルタソは昔から(ry
869デフォルトの名無しさん:2013/06/23(日) 18:11:45.49
>>867
auto buffer = new ubyte[bufsize];
size_t n;
while ((n = f.read(buffer)) > 0) md5.update(buffer[0 .. n]);
こんな感じでよければ・・・
870デフォルトの名無しさん:2013/06/23(日) 19:27:49.22
日本人コミッタの方々マジがんばれ
871デフォルトの名無しさん:2013/06/23(日) 19:54:33.03
>>864-865
釣りだと思うけどD2が出る前の記事貼り付けて何がしたいの?
872デフォルトの名無しさん:2013/06/23(日) 20:48:16.59
Dの情報の賞味期限は極端に短い
873デフォルトの名無しさん:2013/06/23(日) 21:04:22.61
やっぱり関わるの止めた方が良いかな?
874デフォルトの名無しさん:2013/06/23(日) 21:07:59.90
D言語のサイクルの短さが気になる人ってやっぱC++03とかJava6とか使い続ける人種なのか?
875デフォルトの名無しさん:2013/06/23(日) 21:18:57.79
873はいつもの荒らし
876デフォルトの名無しさん:2013/06/23(日) 21:36:59.28
気になる人は10年後くらいにまた来てください。
877デフォルトの名無しさん:2013/06/23(日) 21:40:02.97
     (´・ω・`)
   /     `ヽ.   お薬増やしておきますねー
  __/  ┃)) __i |          お大事ぬ
/ ヽ,,⌒)___(,,ノ\
878デフォルトの名無しさん:2013/06/24(月) 01:43:41.66
D言語はソース公開されてるしだめなところは頑張れば自分でなんとか出来るのに
どうして何もしないで文句ばっかり言うんだろう
どうして他にも言語たくさんあるのになんでわざわざD言語に固執して文句いうの?
twitterとかでD言語使えばかっこいいとか変なイメージが付いてるせい?
D言語で書きましたって言いたいだけなんじゃないの?
そういう人たちには僕らがなぜD言語が好きかは一生理解できないと思う
本当に悲しい
879デフォルトの名無しさん:2013/06/24(月) 03:27:50.94
マイナー言語の定めだから気にしても仕方ないし
878のレスはD言語使っている自分から見ても少々気持ち悪い
880デフォルトの名無しさん:2013/06/24(月) 04:43:54.75
成果だけ欲しい人には向いてないと思う
881デフォルトの名無しさん:2013/06/24(月) 05:42:09.05
>>869
目処が立ちました。ありがとうございます。
関連する内容で2点疑問が出てきました。

File f = new File(filename);
scope(exit) f.close();

とするより、

BufferedFile f = new BufferedFile(filename, FileMode.In, bufsiz);
scope(exit) f.close();

とした方が良い気がしたのですが、後者の方がむしろ遅くなるということはありますか?

あと、別のコンストラクタを使って、

BufferedFile f = new BufferedFile(new File(filename), bufsiz);
scope(exit) f.close();

とも書けるようですが、この場合、new File(filename) で確保した方のオブジェクトは、
明示的に解放しなくても問題無いでしょうか?それとも、

File f = new File(filename);
scope(exit) f.close();
BufferedFile bf = new BufferedFile(f, bufsiz);
scope(exit) bf.close();

みたいな書き方にする必要があるのでしょうか?
882デフォルトの名無しさん:2013/06/24(月) 08:36:26.76
CommonType!(int*, ubyte*)ってvoid*になるんじゃないんだね
しかもCommonType!(int*, void*)だとint*になるしvoid*ってどう思われてるんだろう
883デフォルトの名無しさん:2013/06/24(月) 19:45:50.54
>>881
Javaは好きですか?
884デフォルトの名無しさん:2013/06/24(月) 22:23:52.60
D言語よりHaskellの方が速いっぽい
D言語オワタ\(^o^)/
885デフォルトの名無しさん:2013/06/24(月) 22:26:57.34
>>884
釣られないぞ
886デフォルトの名無しさん:2013/06/25(火) 00:21:17.33
HaswellよりDのほうが遅いのは常識だろ?
887デフォルトの名無しさん:2013/06/25(火) 00:37:42.41
888デフォルトの名無しさん:2013/06/25(火) 01:46:51.66
mixinをふんだんに使ったWin32/x11/Be/NSXで動くD用Guiライブラリをわりとガチで作ろうと思う
名前は何がいいだろうか

import **.window;
みたいな具合になるのであまり長くないと基地
889デフォルトの名無しさん:2013/06/25(火) 02:31:16.77
door
890デフォルトの名無しさん:2013/06/25(火) 03:17:33.78
guide
891デフォルトの名無しさん:2013/06/25(火) 06:08:16.84
暇だったらUTF-8対応のコマンドプロンプト作ってくだしあ
892デフォルトの名無しさん:2013/06/25(火) 08:36:58.98
Windows 7 だけどコマンドプロンプト utf8 にして使えてるよ
893デフォルトの名無しさん:2013/06/25(火) 10:56:52.75
おまん子プルンプルン♪じゃ駄目なの?
894デフォルトの名無しさん:2013/06/25(火) 11:01:56.34
BNXW
passport
MPGUIW
GUIMIX

貧弱ぅ〜貧弱ぅ〜。
いい名前思いつかないなー。
895デフォルトの名無しさん:2013/06/25(火) 11:08:05.00
dyndow
896デフォルトの名無しさん:2013/06/25(火) 11:10:02.29
binbow
897デフォルトの名無しさん:2013/06/25(火) 11:19:41.86
言語とかライブラリの名前って○○が好きだからってのが結構多いから
なんか好きな物の名前付ければいいんじゃないかな
だからと言って>>893みたいなのにすると使う人が減っちゃうから欲望は抑え目にな
おっぱいとかぱんつくらいならセーフかな
898デフォルトの名無しさん:2013/06/25(火) 11:25:52.42
おっぱいポヨンポヨン☆
これでおながいします
899デフォルトの名無しさん:2013/06/25(火) 11:34:01.25
import destroyed.windows;
素敵です。
900デフォルトの名無しさん:2013/06/25(火) 11:41:03.91
broken windows ってのもあったな
901デフォルトの名無しさん:2013/06/25(火) 12:16:49.73
import fuck.off.windows;
902デフォルトの名無しさん:2013/06/25(火) 12:21:06.99
だいぶん前にセガ本にあんまりこった名前にすると後世で後悔するから、
ある程度汎用なのがいいよって書いてあった。
903デフォルトの名無しさん:2013/06/25(火) 12:30:20.53
import dw;
904デフォルトの名無しさん:2013/06/25(火) 12:36:00.34
Mixin for GUI Tool Kit on D => MGTKD

GTKが入ってるとアウトかなぁ・・・。
905デフォルトの名無しさん:2013/06/25(火) 12:41:50.77
import tkd.*;
906デフォルトの名無しさん:2013/06/25(火) 13:11:43.33
import tkg.window;
907デフォルトの名無しさん:2013/06/25(火) 13:20:18.85
import MG5;
908デフォルトの名無しさん:2013/06/25(火) 13:56:36.16
import DIY;
909デフォルトの名無しさん:2013/06/25(火) 14:01:55.68
import GTD.*;
910デフォルトの名無しさん:2013/06/25(火) 14:04:04.82
GMD => Gui Manager for D
911デフォルトの名無しさん:2013/06/25(火) 16:12:44.27
import 4wd;
912デフォルトの名無しさん:2013/06/25(火) 16:15:49.18
import DDT;
913デフォルトの名無しさん:2013/06/25(火) 17:49:41.63
import trouble.windows;
914デフォルトの名無しさん:2013/06/25(火) 17:52:41.64
import DOS;
915デフォルトの名無しさん:2013/06/25(火) 17:56:47.45
import g.c.d;
916デフォルトの名無しさん:2013/06/25(火) 18:02:02.81
こういうネタの受け皿になるべきネタスレが
ム板にほとんど残っていないのは
まことに残念な事であるなあ
917デフォルトの名無しさん:2013/06/25(火) 18:02:43.02
import kkd.*;
918デフォルトの名無しさん:2013/06/25(火) 18:06:26.78
import mxd;
919デフォルトの名無しさん:2013/06/25(火) 18:29:44.02
>>888
2chGLとかだめかな?w
ところでなぜOSXには対応させないんだぜ

せっかくつくるなら直感的に使えつつ長ったらしい記述が要らないライブラリにしてほしい

auto w = new Window("hoge");
w.title = "fuga"; //これで窓のタイトルが変わる
w.pos = [100, 200]; //これで窓の位置が変わる

みたいな具合に使えるといいな
920デフォルトの名無しさん:2013/06/25(火) 18:36:55.84
import SOD;
921デフォルトの名無しさん:2013/06/25(火) 18:39:02.91
import webgl.d.ts;
922デフォルトの名無しさん:2013/06/25(火) 19:40:38.94
なんで荒れてるんだ
誰かファビョったか
923デフォルトの名無しさん:2013/06/25(火) 19:50:15.23
>>922
ただの大喜利大会
924デフォルトの名無しさん:2013/06/25(火) 21:18:39.90
module category.scat;
public import favorite.eat, favorite.drink;
925デフォルトの名無しさん:2013/06/25(火) 22:01:30.64
地味に >>890 はうまいと思うんだが
926デフォルトの名無しさん:2013/06/25(火) 22:26:21.93
guid とか guide とか検索し辛いんだよ!
927デフォルトの名無しさん:2013/06/25(火) 22:52:52.40
go-ide
928デフォルトの名無しさん:2013/06/25(火) 22:52:14.13
import DGL
929デフォルトの名無しさん:2013/06/25(火) 22:53:41.35
wingo
930デフォルトの名無しさん:2013/06/25(火) 22:54:34.07
walters.original.tm
931デフォルトの名無しさん:2013/06/25(火) 22:54:44.52
duiで
932デフォルトの名無しさん:2013/06/25(火) 23:06:22.69
dwm
933デフォルトの名無しさん:2013/06/26(水) 08:15:57.41
uimix
uix
934デフォルトの名無しさん:2013/06/26(水) 12:08:39.20
自分も窓ライブラリ作ってみたいな
具体的にどんな感じがいいだろうか
Dらしく無駄なく書きたいし
HelloWorldか
>>919みたいな擬似サンプルがほしい
935デフォルトの名無しさん:2013/06/26(水) 13:24:29.02
DFLは >>919 みたいなのだよ
936デフォルトの名無しさん:2013/06/26(水) 21:13:54.49
>>934
DFLメンテしてよ
937デフォルトの名無しさん:2013/06/26(水) 23:28:32.11
D言語とC#はどっちが高速ですか?
938デフォルトの名無しさん:2013/06/26(水) 23:32:01.86
D言語とC#はどっちが高速ですか?
939デフォルトの名無しさん:2013/06/26(水) 23:32:41.65
既存のコードが動かなくなるまではD言語の方が圧倒的に高速ですね
940デフォルトの名無しさん:2013/06/27(木) 11:50:20.39
既存のコードが動かなくなるまではD言語の方が圧倒的に短命ですね
941デフォルトの名無しさん:2013/06/29(土) 00:01:40.42
DConf の各セッションの動画が出揃ったようなので
惜しくも会場へ行けなかった諸氏は目を通しておくがよいよいよい

http://www.youtube.com/channel/UCzYzlIaxNosNLAueoQaQYXw
942デフォルトの名無しさん:2013/07/05(金) 11:55:50.49
テンプレートの特殊化にテンプレートは使ってはいかんのかな
なんかリンクエラーになるんだけど

struct Hoge(T) {void hoge() {}}

T fuga(T:Hoge!int)() { return T(); }

void main()
{
Hoge!int h;
h.hoge();
}
943デフォルトの名無しさん:2013/07/05(金) 12:26:32.02
>>942
たぶんバグ
git head では再現しない

ちなみに -inline をつけたら回避できるかも
944デフォルトの名無しさん:2013/07/05(金) 12:42:27.52
>>943
あなたが神か

dmd2.063.2では-inlineで回避できた
headで直っているということなので次のリリースをのんびり待ちます
945デフォルトの名無しさん:2013/07/07(日) 20:02:23.60
struct S { int[1] a; }
void main() {
shared S a;
S b;
b = a;
}
Error: cannot implicitly convert expression (a) of type shared(S) to S

(´・ω・`)
946デフォルトの名無しさん:2013/07/08(月) 01:23:00.31
>>945
すまん何がおかしいのかわからん解説しておくれ
ごく正常な動作に見える
947デフォルトの名無しさん:2013/07/08(月) 01:29:21.94
struct S { int a; }
とかだと通る。
struct S { int[1] a; }
とメモリ上は同じなのに・・・

そもそもどっちも通っちゃいけないものなのか?
948デフォルトの名無しさん:2013/07/08(月) 10:28:55.94
>>947
struct S { int a; }が通るってことはメンバが全部値渡しの場合はちゃんとsharedから除外されてるのか
で、静的配列も値渡しだからsharedが効くのはおかしいと
なるほど確かに矛盾してるな
949デフォルトの名無しさん:2013/07/09(火) 17:53:25.37
MacでDerelict3使うみたいな紹介記事見てから、ubuntuで試してみようかなって思ったんだけど、
テンプレのDerelictの公式からDerelict3のmaster.zip落したんだけどbuidすると途中でエラーになる。

どうも、importのフォルダ名は全部小文字なのに、build中にSDL2だけファイルパス指定に大文字を
使ってるせいでfile not foundな例外が出てるっぽい。検索したら似たような内容のブログ記事もあった。

ダメもとでimport内に大文字の「SDL2」ってフォルダ作ってからbuildしてみたら、なんかbuild成功しちゃう。
でも、実際それを使ってみると動的ライブラリのロード時にエラーでまくりでコンパイルできねぇ。
ちゃんとDerelictUtil と DerelictSDL2 と 本物のSDL2の動的ライブラリリンクしてるんだけど・・・

windows以外でDerelict3使えてるひと居ますか?
950デフォルトの名無しさん:2013/07/09(火) 18:07:17.35
Windowsでしか使ったことないんでわからんが、
なんかパッと見Macだとderelict.sdl2.sdl.dの中で実行時にロードするライブラリ名を
/usr/local/lib/libSDL2.dylib ... みたいな感じでフルに指定してるっぽいので
ロードしくるならそこ直してないのに原因があるかもしれない。

あと自分でライブラリリンクするんじゃなくて、DerelictSDL2Loader.loadが
実行時動的に上記で指定してるライブラリを読むのでその辺も一応。
(まあごめん、Windowsの話だけど)
951デフォルトの名無しさん:2013/07/09(火) 18:38:36.66
>>950
おお、サンクス!

>あと自分でライブラリリンクするんじゃなくて〜
そーだよね! これはやばい恥ずかしい書き方してしまった・・・。

もうちょい粘ってみます
952デフォルトの名無しさん:2013/07/09(火) 22:40:43.48
ソースコード(sdl.d)読めば分かるけどLinuxの場合はlibSDL2.soを実行ファイルと同じディレクトリか/usr/local/lib以下に置くだけ
コンパイルはDerelictSDL2だけをインポートしてlibDerelictUtil.aとlibDerelictSDL2.aだけリンクすれば出来るはず
俺の手元にある去年のDerelict3だとsdl2は小文字でインポートされてるので今年になってからのエンバグっぽい
953デフォルトの名無しさん:2013/07/09(火) 23:00:49.84
アンドレイさんが本でDのモジュールと構成フォルダは全部小文字にすべきって言ってたよね
954デフォルトの名無しさん:2013/07/09(火) 23:57:28.43
ttp://www.kmonos.net/alang/d/dstyle.html
公式のスタイルガイドにもそう書いてある
955デフォルトの名無しさん:2013/07/10(水) 18:14:50.90
2013.7.10 WED
火星「月の出」を動画で見る
http://wired.jp/2013/07/10/curiosity-rover-shoots-video-of-martian-moonrise/
火星の地平線に衛星フォボスが上る「月の出」をNASAが公開した。
キュリオシティが撮影した静止画像からつくられたものだ。
956デフォルトの名無しさん:2013/07/10(水) 19:25:05.44
>>952
ありがとう!ガッツリ書かれてましたね

>>949の問題は
build.d 中でパス指定がSDL2だけ大文字の 「SDL2」 になっているところを
「sdl2」 に勝手に変えてコンパイル→buildしてもOKだったけど不安すぎる・・・

それにやっぱり実際にコード中で
import derelict.sdl2.sdl;
とやるだけでエラーがでますね

だけど、/usr/local/lib に動的ライブラリが存在しようがしまいが
同じエラーログがでるんで、やっぱ俺の指定の仕方が悪いんだろうと思います
もうちょいがんばります
957デフォルトの名無しさん:2013/07/10(水) 22:35:08.84
コンパイル可能なのにエラーが出るなら置いてるSDL2ライブラリの可能性もあるよ
958デフォルトの名無しさん:2013/07/11(木) 14:02:50.42
libSDL2.soまで小文字にしてるわけじゃないよね?一応
959デフォルトの名無しさん:2013/07/11(木) 18:12:38.84
>>958
そこは大丈夫です!

>>957
コンパイルエラーですね
まだD言語のstaticコンストラクタや、エラーの読み方が理解できてないので憶測になりますが
どうもutil.loder周辺が走るくらいのところで「定義されていない参照です」と出るようです

それどころか、他のライブラリで試してみてもSDLの時と同じエラーが出るので
utilの周辺を眺めているところです
960>>959:2013/07/11(木) 18:43:23.78
うああああああああ、みなさんほんとすみませんでした!
わたくしめがlibdl.aへのリンクを忘れていただけのことでした

お騒がせとスレ汚しすみませんでした。(何よりライブラリ側疑ってほんともうしわけなかった・・・)
色々と答えてくれた方々ほんとうにありがとうございました
961デフォルトの名無しさん:2013/07/11(木) 21:29:41.88
解決してよかった
962デフォルトの名無しさん:2013/07/12(金) 08:43:37.03
>>960
罰として最初から整理し直して再報告
963デフォルトの名無しさん:2013/07/13(土) 10:25:18.38
>>962
ごめんなさい、昨日のうちにレスしようと思ったら
行数制限ひっかかりまくってさるさん食らってました
文字数と行数のせいで見難いと思うけどまとめます
964デフォルトの名無しさん:2013/07/13(土) 10:28:02.20
まとめるという作業とは
見難くするのではなく
簡潔に見易く整理し
判りやすくする作業のことである
965デフォルトの名無しさん:2013/07/13(土) 10:32:05.65
「Ubuntu 13.04(Raring) 32bit 環境で Derelict3(2013/07/10 時点) を使おうとした」
・公式リポジトリからmasterを落として dmd(2.063) で build したところエラーが起きる
 (存在しないディレクトリへのアクセス)
・build/buidl.d 中 の 98行目を次のように書き換えたところビルド可能になった
 修正前:enum packSDL2 = Package( "SDL2", srcDerelict ~ "SDL2/" );
 修正後:enum packSDL2 = Package( "SDL2", srcDerelict ~ "sdl2/" );
・DerelictUtil(libDerelictUtil.a) と DerelictSDL2(libDerelictSDL2.a) をリンクし、
 SDL2(libSDL2.so)を適切に配置するもコンパイルエラーが出て泣く
・dl(libdl.so)をリンクすることによりコンパイルに成功する
966デフォルトの名無しさん:2013/07/13(土) 11:14:41.60
ありがとう
って伝えたくて
967デフォルトの名無しさん:2013/07/13(土) 18:14:43.21
DerelictがバインドしてるSFML2は、SFML(C++ゲームエンジン)の
C言語版(CSFML)の関数しか使えないみたいだけど、
DSFML(Derelictとは別モノ)はC++のクラスを再現してくれてるのね!
SFML自体気になってたからこれを機に使ってみようかしら
968デフォルトの名無しさん:2013/07/13(土) 20:13:47.94
DSFMLはCSFMLをDのクラスでラップしてるだけでC++SFMLとは違うよ。
DerelictのSFML2を同じ方法でラップした方が効率が良い
969デフォルトの名無しさん:2013/07/13(土) 21:13:55.82
>>968
ほんとだ、てっきり再現してるのかと思ったら色々違う部分があるね
970デフォルトの名無しさん:2013/07/14(日) 09:48:09.15
D言語友の会
http://dusers.dip.jp/
フォーラムが賑わってるのかと思ったら
全部SPAMにやられてるでござる
971デフォルトの名無しさん:2013/07/14(日) 10:45:12.99
972デフォルトの名無しさん:2013/07/15(月) 19:36:42.04
Derelict3のbuild/build.dの問題、もう修正されてるな
973デフォルトの名無しさん:2013/07/16(火) 22:21:37.56
おおほんと、ありがたや
974デフォルトの名無しさん:2013/07/17(水) 00:01:34.08
>>968
気になってDSFMLのソース見てたら、
3.141592 とか 180 とかがベタ書きされててなんだか切ない気持ちになった
975デフォルトの名無しさん:2013/07/17(水) 09:52:24.19
976デフォルトの名無しさん:2013/07/17(水) 20:14:04.01
おつおつ
977デフォルトの名無しさん:2013/07/17(水) 20:30:58.80
友の会の入門講座で const と immutable を勉強してるんだけど

メンバ変数のgetterを書くとき、C++では
const Foo& getFoo() const { return m_foo; } // Foo m_foo; のconst参照返し
(もしくは: Foo getFoo() const { return m_foo; } // 値型のコピーを返し)
としてたところを

immutable(Foo) getFoo() immutable { return m_foo; } // Foo m_foo = new Foo();
にすればいいってことかな?
978デフォルトの名無しさん:2013/07/17(水) 20:44:38.02
プレビューで推敲してたら間違ったまま途中で書き込んでしまった
返り値の型は const(Foo) じゃないとダメだよね・・・?
979デフォルトの名無しさん:2013/07/17(水) 20:52:06.97
>>971
神ツール来た?
64bitだとCOFFだから今更な気もするけど…
980デフォルトの名無しさん:2013/07/17(水) 20:58:37.02
>>977
constもしくは inout
戻り値は autoでもいい
981デフォルトの名無しさん:2013/07/17(水) 21:06:31.29
>>980
ありがと〜

でもごめん全然理解できてなかったみたい。もうちっと見回ってきます
982デフォルトの名無しさん:2013/07/17(水) 21:11:05.33
普通にTDPL買った方が良いと思う
983デフォルトの名無しさん:2013/07/17(水) 22:30:11.47
const/immutable/sharedはDの機能の中でも特徴的でかなり有用なんだがその分結構ややこしい
984デフォルトの名無しさん:2013/07/17(水) 22:32:50.55
class C {
 private Object obj;
 const const(Object) get() { return obj; }
 Object get() { return obj; }
}

みたいな二重定義しなきゃならないのなんとかならないかな
985デフォルトの名無しさん:2013/07/17(水) 22:42:59.00
inoutじゃだめなんだっけ
986デフォルトの名無しさん:2013/07/18(木) 03:39:46.38
const const(Object) get() { return obj; }
って
const Object get() { return const(obj); }
の方が自然じゃね?って思うのは、俺がD脳になってないから?
987デフォルトの名無しさん:2013/07/18(木) 07:07:27.49
それだと戻り値の型がconst(Object)にならないんじゃ
あれ?それともCのインスタンスがconstの時に呼び出せな…

ええいややこしいわっ
988デフォルトの名無しさん:2013/07/18(木) 09:09:18.41
>>1
http://dusers.dip.jp/ - D言語友の会(日本語フォーラムあり)

今日も死んでる?
989デフォルトの名無しさん:2013/07/18(木) 17:40:11.47
C++だと>>984みたいにする必要があたけど
Dではinoutでいけそうなんだね。なんて快適なんだ
990デフォルトの名無しさん:2013/07/18(木) 19:29:44.42
inoutってよくわからなかったけどそういうものだったのか。すばらしい

もしかしてconstな要素を持つ変数にRebindableを使わずに再代入する方法もすでにあったりする?
991デフォルトの名無しさん:2013/07/19(金) 00:18:28.00
それをするなんてとんでもない
992デフォルトの名無しさん:2013/07/19(金) 00:23:38.82
import std.string;
class C{
~this(){
format("");
}
}
void main(){
C c = new C;
}

core.exception.InvalidMemoryOperationError

これって何とかなりません?
993デフォルトの名無しさん:2013/07/19(金) 07:12:08.30
const(Object)* value;

auto obj = new Object;
value = &obj;
auto obj2 = new Object;
value = &obj2;

さすがポインタだなんともないぜ
994デフォルトの名無しさん:2013/07/19(金) 13:24:21.31
代入演算子のときにtypeof(__leftexp)みたいなのがほしいぜ
995デフォルトの名無しさん:2013/07/19(金) 14:10:06.46
もしかして:暗黙変換
996デフォルトの名無しさん:2013/07/19(金) 18:19:21.77
大阪府文化財センターHP、サイバー攻撃受け閉鎖
http://www.asahi.com/national/update/0719/OSK201307190030.html
大阪府の外郭団体「府文化財センター」のホームページが不正アクセスで改ざんされ、
17日から閉鎖されていたことがわかった。サイトの閲覧者がウイルスに感染する危険性があったが、
現時点で二次被害は確認されていないという。
同センターによると、17日にサイト管理会社から「サイバー攻撃を受けた」と連絡があった。
勃起不全治療薬の広告が出てくるように改ざんされた。広告は英語表記だったという。
サイトには文化財関連の講演会や刊行物の案内などを掲載。改ざんの被害は5月に続いて2回目で、
同センターは対策をとって再開する方針。担当者は「うちが狙われる理由がわからない」と話している。
997デフォルトの名無しさん:2013/07/19(金) 20:52:49.13
D1をつかってるひといますか?
FAQよんだらわかるかな?
998デフォルトの名無しさん:2013/07/20(土) 06:09:51.39
ケーン・ワカバに聞いてみたら?
あいつが一番詳しいんじゃ無いかな
999デフォルトの名無しさん:2013/07/20(土) 09:39:03.86
うん
1000デフォルトの名無しさん:2013/07/20(土) 09:42:22.96
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。