D言語 Part14
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/07/19(木) 10:10:24過去スレは >>2
■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)
■コンパイラ
ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
ttp://gdcmac.sourceforge.net/ (GDCのmac用バイナリ)
■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://dsource.org/ (dsource)
ttp://www.sun-inet.or.jp/~yaneurao/dlang/
ttp://wisdom.sakura.ne.jp/programming/d/
0002デフォルトの名無しさん
2007/07/19(木) 10:12:05Part13 http://pc11.2ch.net/test/read.cgi/tech/1177499924/
Part12 http://pc11.2ch.net/test/read.cgi/tech/1171037394/
Part11 http://pc10.2ch.net/test/read.cgi/tech/1165621441/
Part10 http://pc8.2ch.net/test/read.cgi/tech/1158013550/
Part 9 http://pc8.2ch.net/test/read.cgi/tech/1146656260/
Part 8 http://pc8.2ch.net/test/read.cgi/tech/1137068104/
Part 7 http://pc8.2ch.net/test/read.cgi/tech/1122912733/
Part 6 http://pc8.2ch.net/test/read.cgi/tech/1109933426/
Part 5 http://pc5.2ch.net/test/read.cgi/tech/1102785854/
Part 4 http://pc5.2ch.net/test/read.cgi/tech/1091185216/
Part 3 http://pc5.2ch.net/test/read.cgi/tech/1079068715/
Part 2 http://f3.aaacafe.ne.jp/~null/cache/1079280501.html
Part 1 http://pc5.2ch.net/tech/kako/1003/10036/1003674814.html
0003デフォルトの名無しさん
2007/07/19(木) 10:12:45D言語なら俺に聞け
http://pc11.2ch.net/test/read.cgi/tech/1108172110/
D言語を広めるスレ
http://pc11.2ch.net/test/read.cgi/tech/1175432606/
D言語は多分コケると思っている人の数→
http://pc11.2ch.net/test/read.cgi/tech/1136288019/
【次世代言語】D言語でOSを作ろう【Monaの移植?】
http://pc11.2ch.net/test/read.cgi/tech/1128794438/
バイナリをゲロる言語の魅力って何?
http://pc11.2ch.net/test/read.cgi/tech/1160869311/
その他リンク
【Java/C/PHP/Perl/Ruby/Python/TeX】Eclipse M22
http://pc11.2ch.net/test/read.cgi/tech/1168166588/
eclipseってそんなに良いか?【エクリプス】
http://pc11.2ch.net/test/read.cgi/tech/1099300344/
統合開発環境Eclipseプラグイン開発QA
http://pc11.2ch.net/test/read.cgi/tech/1081517094/
"Code of the Nerds" Digital Mars C/C++
http://pc11.2ch.net/test/read.cgi/tech/1044210976/
0004デフォルトの名無しさん
2007/07/19(木) 10:13:48ttp://www.digitalmars.com/download/freecompiler.html
ttp://ddbg.mainia.de/
ttp://video.google.com/videoplay?docid=-7073020265668105471
ttp://d.puremagic.com/issues/
ttp://www.kmonos.net/alang/d/overview.html
ttp://www.kmonos.net/alang/d/struct.html
ttp://www.kmonos.net/alang/wnd/topics/winapi.ja.html
ttp://www.kmonos.net/alang/wnd/topics/flectioned.ja.html
ttp://www.kmonos.net/alang/wnd/topics/pitfall.ja.html#mojibake
ttp://www.kmonos.net/alang/wnd/devenv.ja.html#ide
ttp://shinh.skr.jp/d/bogoyaml.html
ttp://www.prowiki.org/wiki4d/wiki.cgi?AllLibraries/XmlLibraries
ttp://www.dsource.org/projects/mango/browser/branches/v2.1/mango/xml
ttp://www.dsource.org/projects/tango/browser/trunk?rev=1236
ttp://www.dprogramming.com/entice.php
ttp://www.dsource.org/projects/tango/wiki/ChapterThreading
ttp://d.hatena.ne.jp/shinichiro_h/searchdiary?word=%2a%5bD%5d
ttp://ja.wikipedia.org/wiki/Z%E8%A8%80%E8%AA%9E
ttp://www.wikiroom.com/sakurai/index.php?FrontPage
ttp://forums.codeblocks.org/index.php?board=20.0
ttp://www.google.co.jp/search?q=D%E8%A8%80%E8%AA%9E
ttp://www.javaroad.jp/java_exception3.htm
0005デフォルトの名無しさん
2007/07/19(木) 11:57:140006デフォルトの名無しさん
2007/07/19(木) 13:10:400007デフォルトの名無しさん
2007/07/19(木) 13:13:56(超>>1)乙;
0008デフォルトの名無しさん
2007/07/19(木) 13:14:360009デフォルトの名無しさん
2007/07/19(木) 13:17:370010デフォルトの名無しさん
2007/07/19(木) 13:23:38いちおつ;
^^
0011デフォルトの名無しさん
2007/07/19(木) 13:29:03副作用のない式文は不正じゃね
0012デフォルトの名無しさん
2007/07/19(木) 13:37:210013デフォルトの名無しさん
2007/07/19(木) 16:11:00var foo = new Class { bar = 1, baz = 2 };
0014デフォルトの名無しさん
2007/07/19(木) 16:37:47構造体リテラルがそういうようなのをサポートしてくれたらいいんだけどね。
0015デフォルトの名無しさん
2007/07/19(木) 16:57:46static X x = { a:1, b:2}; // c は 0, d は 7
0016デフォルトの名無しさん
2007/07/19(木) 16:58:470017デフォルトの名無しさん
2007/07/19(木) 18:11:58言語の使われるか否かは、その仕様よりIDEって印象があるので気になる。
0018デフォルトの名無しさん
2007/07/19(木) 18:15:520019デフォルトの名無しさん
2007/07/19(木) 18:18:32リンク集つくるなら、タイトルぐらい書け('A`)
0020デフォルトの名無しさん
2007/07/19(木) 18:25:100021デフォルトの名無しさん
2007/07/19(木) 18:36:17ノ
なにげに使ってる
0022デフォルトの名無しさん
2007/07/19(木) 18:37:51std.file.getAttributes の戻り値の意味はどこかに書いてありますか?
0023デフォルトの名無しさん
2007/07/19(木) 18:45:38WindowsならMSDNのGetFileAttributesのところ。
0024デフォルトの名無しさん
2007/07/19(木) 18:56:48ありがとうございます!
0025デフォルトの名無しさん
2007/07/19(木) 19:22:51正直言うと、12が何に使うものなのか分からんかった。
無名構造体みたいなものだろうか
0026デフォルトの名無しさん
2007/07/19(木) 19:24:51newと同時にプロパティを設定することができる。
C#3.0にあるらしい。
0027デフォルトの名無しさん
2007/07/19(木) 21:25:29>>26
auto x = new class("foo", 3, "bar"){
char[] a; int n; char[] s;
this(...){
foreach(int i, v; this.tupleof){
this.tupleof[i] = va_arg!(typeof(v))(_argptr);
}
}
};
という感じのを、プロパティ名も指定可能にしたようなもの?
0028デフォルトの名無しさん
2007/07/19(木) 21:34:35var foo = new Class { bar = 1, baz = 2 };
は、Dだと
Class __tmp = new Class;
with(__tmp) { bar = 1; baz = 2 }
auto foo = __tmp;
と等価。
>>27と等価なのはC#だと、
var x = new { a = "foo", n = 3, s = "bar" };
だね。同じ型・名前のプロパティを同じ順番で並べた匿名型は同じ型になるという優れもの。
0029デフォルトの名無しさん
2007/07/19(木) 21:46:160030デフォルトの名無しさん
2007/07/19(木) 22:22:29なんか不都合あったっけ?
0031デフォルトの名無しさん
2007/07/19(木) 22:24:290032デフォルトの名無しさん
2007/07/19(木) 22:37:490033デフォルトの名無しさん
2007/07/20(金) 05:11:440034デフォルトの名無しさん
2007/07/20(金) 06:08:17DIってなに?
0035デフォルトの名無しさん
2007/07/20(金) 06:09:130036デフォルトの名無しさん
2007/07/20(金) 06:11:00>>13が無名クラスでは
0037デフォルトの名無しさん
2007/07/20(金) 07:10:21あったら楽しいなと思って趣味で作ったので、何か改良の余地があれば行ってください。
Installer of D Compilor for win2000/XP
http://2sen.dip.jp:81/cgi-bin/upgun/up1/source/up6740.lzh
0038デフォルトの名無しさん
2007/07/20(金) 11:43:18Dにも無名クラス自体はあるからなあ。
auto x = new class{
/*クラス定義*/
};
0039デフォルトの名無しさん
2007/07/20(金) 13:30:30既存のsc.iniを残す機能が欲しいような
0040デフォルトの名無しさん
2007/07/20(金) 13:44:070041デフォルトの名無しさん
2007/07/20(金) 16:14:570042デフォルトの名無しさん
2007/07/20(金) 16:32:280043デフォルトの名無しさん
2007/07/20(金) 16:48:220044デフォルトの名無しさん
2007/07/20(金) 16:53:350045デフォルトの名無しさん
2007/07/21(土) 01:49:16前スレ>>1000
そうだといいな・・・
0046デフォルトの名無しさん
2007/07/21(土) 02:03:50世界が沈むとかどう考えても不吉な表現すぐるだろ
0047デフォルトの名無しさん
2007/07/21(土) 04:58:150048デフォルトの名無しさん
2007/07/21(土) 11:39:10そうか?
0049デフォルトの名無しさん
2007/07/21(土) 14:09:27沈めてどうするんだよw
0050デフォルトの名無しさん
2007/07/21(土) 15:07:31すぐにメンバにアクセス出来ないのは少しだけメンドイなぁ、と思う。
Javaだと不要だから余計……。C++とかC#じゃどうだっけ。
0051デフォルトの名無しさん
2007/07/21(土) 15:18:48個人的にはOtsu.new()ってすべきだと思うけど、new() Otsu()が表現できなくなるしなぁ。
0052デフォルトの名無しさん
2007/07/21(土) 15:21:01>Javascriptも括弧でくくる必要ある。
は勘違いだったっぽ。スレ汚しスマソ。
0053デフォルトの名無しさん
2007/07/21(土) 15:32:03C#は new Class().Memberでいけたと思う。
でも、視覚的に気持ち悪いから括弧つけてる。
0054デフォルトの名無しさん
2007/07/21(土) 16:02:02int a = 3;
static X opCall(){
return new X;
}
}
void main(){
printf("%d\n", X().a);
}
これなら外側の括弧どころかnewもいらないよ!
0055デフォルトの名無しさん
2007/07/21(土) 16:32:550056デフォルトの名無しさん
2007/07/21(土) 20:01:49> コンパイラーはassert式を全く評価しないことも許されています。
> コンパイラは、最適化やコード生成の段階で、 実行がassert(0)
> の部分には到達しないことを仮定してよいものとします。
だとさ。
でもこっちではassertに引っかかるコードで
> Error: assert(0) failed
> Error: cannot evaluate f() at compile time
って言われた。2.002。
0057デフォルトの名無しさん
2007/07/22(日) 18:04:15修正箇所、機能追加箇所ともに期待が
たかまってしまう
005850
2007/07/22(日) 19:37:55どもども。
俺もOtsu.new()としたい派でつ。出来ればnew()以外の名前にも出来れば最高ネ。
> new() Otsu()が表現できなくなるしなぁ。
これ何のことだか全然知らないのだけど、どういう意味でしょか?
俺、なんか言語仕様見逃してる?
0059デフォルトの名無しさん
2007/07/22(日) 19:43:52という構文だから、
Otsu.new(/*コンストラクタの引数*/)
とやっちゃうと、アロケータの引数は指定できなくなっちゃう、という話だと思う。
006058
2007/07/22(日) 19:47:46アロケータに引数なんて渡せたのね……不勉強ですた。
なるほどそう簡単にはstaticメソッドと同じ呼び出し構文に出来ないわけだ。
0062デフォルトの名無しさん
2007/07/22(日) 19:54:27勝手にそう定義すればいいんじゃないの?
0063デフォルトの名無しさん
2007/07/22(日) 20:12:31>Otsu.new(/*コンストラクタの引数*/)
>とやっちゃうと、アロケータの引数は指定できなくなっちゃう、という話だと思う。
個人的には ObjC 風に Otsu.alloc(argForAllocator).init(argForConstructor);
にすれば良いと思うのだけど。
0064デフォルトの名無しさん
2007/07/22(日) 20:15:500065デフォルトの名無しさん
2007/07/22(日) 20:23:300066デフォルトの名無しさん
2007/07/22(日) 20:25:16でいいよ。
006765
2007/07/22(日) 20:25:48そこら辺は Omni Complete で
0068デフォルトの名無しさん
2007/07/22(日) 20:30:07明示的にnew(allocator) Obj(construction);
とすればいいだけじゃね?
でなけりゃ、ファクトリクラスを作るとか。
0069デフォルトの名無しさん
2007/07/22(日) 20:40:130070デフォルトの名無しさん
2007/07/22(日) 20:42:160071デフォルトの名無しさん
2007/07/22(日) 22:11:44そういうとき、
class C{ static class C_{ int n=3-1; } }
void main(){ printf("%d\n", (new C.C_).n); }
とかしたいときどうなるの?
new (C.C_).n とかいう感じ?
0072デフォルトの名無しさん
2007/07/22(日) 22:16:27Javaは白根。
0073デフォルトの名無しさん
2007/07/23(月) 03:27:230074デフォルトの名無しさん
2007/07/23(月) 07:28:49Jul 21, 2007
New/Changed Features
Added 0x78 Codeview extension for type dchar.
Added extern (System)
Bugzilla 345: updated std.uni.isUniAlpha to Unicode 5.0.0
System?
0075デフォルトの名無しさん
2007/07/23(月) 07:42:58> and C on other platforms.
'System'はWindowsプラットフォームでは'Windows'と同じであり、
それ以外では'C'と同じです。
要するにプラットフォーム依存のLinkageを指定できるってことだな。
0076デフォルトの名無しさん
2007/07/23(月) 09:09:04Jul 21, 2007
New/Changed Features
* Added 0x78 Codeview extension for type dchar.
* Moved next member from Object.Error to Object.Exception
* Added ForeachRangeStatement
* . Added extern (System)
* Added std.traits
* Bugzilla 345: updated std.uni.isUniAlpha to Unicode 5.0.0
0077デフォルトの名無しさん
2007/07/23(月) 11:40:01個人的には __traits よりも、デバッグ時に関数の隠し引数にでも _caller とか入れてくれたらと思う。
0078デフォルトの名無しさん
2007/07/23(月) 11:48:57しかし何だろう、このforeach周りの不自然な強力さは。
RangeクラスとRangeリテラルを作ろうとは思わなかったんだろうか。
あと範囲を表す関係の演算子って最後を含むか含まないかで".."と"..."あたり二つ用意しないとどことなくメンドイのよね。
traitsはメタプログラミング関係か?
0079デフォルトの名無しさん
2007/07/23(月) 12:09:070080デフォルトの名無しさん
2007/07/23(月) 12:44:30debugブロック?内でしか使えないとか
0081デフォルトの名無しさん
2007/07/23(月) 15:59:38これを待ってたんだよ。ウォルタたん大好き!
0082デフォルトの名無しさん
2007/07/23(月) 16:23:34for (0..3){print $_;}
0123なんだけど
D 2.003 だと
foreach (i; 0 .. 3){writef(i);}
012なのね
0083デフォルトの名無しさん
2007/07/23(月) 16:28:12008477
2007/07/23(月) 17:23:02import std.stdio;
struct Caller{ string fileName; int line; }
debug void func(Caller _caller, int x){
writefln("%s(%d) : x = %d", _caller.fileName, _caller.line, x);
writefln(x);
}
else void func(int x){ writefln(x); }
void main(){
debug func(Caller(__FILE__, __LINE__), 10);
else func(10);
}
こういうようなのを、
import std.stdio;
void func(int x){
debug writefln("%s(%d) : x = %d", _caller.fileName, _caller.line, x);
return x;
}
void main(){
func(10);
}
っていう風に書けたらいいなって思って。
これでは省いたけど、モジュール名とか呼び出し元の関数名とかモジュール名とか
呼び出し元の関数の_callerとかもあるとさらにいいかも?
長文で申し訳ない。
0085デフォルトの名無しさん
2007/07/23(月) 17:34:10008677
2007/07/23(月) 18:24:49呼び出し元のファイル名の取り出し方とか。
軽く見聞きした程度だからどこまでできるかよくわかってないのだけど…
でもまぁ、とりあえず標準でそういう機能がほしいところですね…
0087デフォルトの名無しさん
2007/07/23(月) 18:47:15// Otsu.new!!(argAlloc)(argCtor)
class Otsu{
template New_(aA...){
static typeof(this) New_(TaC...)(TaC aC){
return new(aA) typeof(this)(aC);
}
}
template New(aA...){
alias New_!(aA) New;
}
int n;
this(int n){ this.n = n; }
}
//任意のクラスに対応できる版
template niw_(T,aA...){
T niw_(TaC...)(TaC aC){
return new(aA) T(aC);
}
}
template niw(T, aA...){
alias niw_!(T,aA) niw;
}
void main(){
printf("%d\n", Otsu.New!()(3).n);
printf("%d\n", niw!(Otsu)(5).n);
}
とかどうだろう
0088デフォルトの名無しさん
2007/07/23(月) 20:05:490089デフォルトの名無しさん
2007/07/23(月) 20:56:51願って止まなかった機能追加キタコレ。
0090デフォルトの名無しさん
2007/07/23(月) 21:20:170091デフォルトの名無しさん
2007/07/23(月) 21:25:450092デフォルトの名無しさん
2007/07/23(月) 23:41:470093デフォルトの名無しさん
2007/07/24(火) 08:27:24ほおお
0094デフォルトの名無しさん
2007/07/24(火) 15:06:03sc.iniが分からないから
どうやればいいか分からないですけど
前回のはプロクシの部分で不味かったみたいなので修正
http://sakuratan.ddo.jp/uploader/source/date45550.lzh
�@プロクシの有無
�A�@が有ならプロクシ接続先の入力
�B環境変数の登録
のみ確認します
0095デフォルトの名無しさん
2007/07/24(火) 15:12:510096デフォルトの名無しさん
2007/07/24(火) 16:41:26.. 演算子でタプルを作れたら面白そう。
void f(int[] a ...);
f(0 .. 2); // == f(0, 1)
auto x = [3 .. 6]; // == [3, 4, 5]
あんまり使い道なさそうだけど
0097デフォルトの名無しさん
2007/07/24(火) 17:15:44template t(T...){ alias T t; }
template range(int s, int e){
static if(s<e){ alias t!(s, range!(s+1,e)) range; }
else{ alias t!() range; }
}
import std.stdio;
void main(){
writefln((int x,int y){return x+y;}(range!(0,2))); // 1
writefln([range!(3,6)]); // [3,4,5]
}
とかテンプレートで
0098デフォルトの名無しさん
2007/07/24(火) 22:09:180099デフォルトの名無しさん
2007/07/24(火) 22:10:020100デフォルトの名無しさん
2007/07/24(火) 22:24:320101デフォルトの名無しさん
2007/07/24(火) 22:50:180102デフォルトの名無しさん
2007/07/24(火) 23:12:390103デフォルトの名無しさん
2007/07/24(火) 23:15:32だいたい..と...とか似すぎで読み違え頻発wwするかは知らないけど
0104デフォルトの名無しさん
2007/07/25(水) 00:28:16なかなかいないだろうから .. と ... で色を変えりゃいい
そういう問題でもないか
0105デフォルトの名無しさん
2007/07/25(水) 01:24:540106デフォルトの名無しさん
2007/07/25(水) 02:28:42間違いやすいから変わったのかな
rubyで .. と ... が使われているなら
使い勝手はどうかリサーチしてみればいいんじゃね
0107デフォルトの名無しさん
2007/07/25(水) 06:23:460108デフォルトの名無しさん
2007/07/25(水) 06:25:00Jul 23, 2007
New/Changed Features
Bugs Fixed
Fixed extern (System)
0109デフォルトの名無しさん
2007/07/25(水) 07:52:30これはそろそろか・・・?
0110デフォルトの名無しさん
2007/07/25(水) 13:33:03ruby 使ってるけど .. と ... でどっちが末尾含むのか毎回混乱してる.
0111デフォルトの名無しさん
2007/07/25(水) 14:22:20.が、一つ多いのだから
含むと覚えればよい
0112デフォルトの名無しさん
2007/07/25(水) 16:10:000113デフォルトの名無しさん
2007/07/25(水) 16:47:02おいもう結論が出たのか
と思ったがDは>>111の考えでおkというだけだな
0114デフォルトの名無しさん
2007/07/25(水) 16:51:030115デフォルトの名無しさん
2007/07/25(水) 17:12:020116デフォルトの名無しさん
2007/07/25(水) 17:31:57嘘
0117デフォルトの名無しさん
2007/07/25(水) 18:42:39予約語を増やす方向には行かなさそうだけど・・・
(というか、toは変数名に多く使われてそうだから余計可能性ないか)
0118デフォルトの名無しさん
2007/07/25(水) 19:31:09if(n in 2..4) writefln(n);
0119デフォルトの名無しさん
2007/07/25(水) 19:39:14クエリ言語でしか見たことないけど、
assert(index in 0 .. array.length);
とか書ければ便利そうだな。
0120デフォルトの名無しさん
2007/07/25(水) 20:03:290121デフォルトの名無しさん
2007/07/25(水) 20:17:050122デフォルトの名無しさん
2007/07/25(水) 23:17:54>プログラミング言語としてはRuby,C,C++,D,Java,Perlを使用した。
Dが国際プログラミングコンテストの日本人チームで使われたとか。
メジャーになった…のか?
0123デフォルトの名無しさん
2007/07/25(水) 23:35:25今年のコンテストが終わったばかりだからややこしい
それはそれとして去年のkuma-はk.inaba氏含めたチームなんだから
メジャーになったと言われてもちょっと納得できない罠
0124デフォルトの名無しさん
2007/07/25(水) 23:39:560125デフォルトの名無しさん
2007/07/25(水) 23:45:13Dは残念でした
0126デフォルトの名無しさん
2007/07/26(木) 09:40:49Rangeクラス化で二項を推すぜー
class Range(ValueType : Comparable){
ValueType min, max;
bool opIn_r(ValueType lhs){ return (min <= value) && (value < max); }
}
if(n in 2..4) writefln(n);
0127デフォルトの名無しさん
2007/07/26(木) 12:15:42phobosのライセンスはZlibライセンスに似ていますが、GPLとは
書いてないし、LGPLと解釈すれば自分で書いたソースは公開しなくても
よいような気がする
0128デフォルトの名無しさん
2007/07/26(木) 12:49:20>公開
そんなことないでしょ
0129デフォルトの名無しさん
2007/07/26(木) 18:05:22なんか最適化を阻害しそうじゃね?
(x in a .. b) が
(x >= a && x < b) や
(x.opCmp(a) >= 0 && x.opCmp(b) < 0)
と見なされれば十分だと思う。
0130デフォルトの名無しさん
2007/07/27(金) 17:48:45flectioned 使えば落ちたときのスタックトレースを見ることはできるけど
ブレークポイント設定してステップ実行とかしたいのに
windbg は不安定すぎて使い物にならないんだけど・・・
0131デフォルトの名無しさん
2007/07/27(金) 17:57:13俺はwindbgでそんなに困ったことなかった…
ddbgはどう?使ったことないけど
0132デフォルトの名無しさん
2007/07/27(金) 18:38:41参考にならないかもしれないけど、俺はVC++2003使ってる。
これだけで、ステップ実行、落ちたときの呼び出し履歴、リソースエディタと、
今のDに足りないものが補えてる。
0133デフォルトの名無しさん
2007/07/27(金) 18:49:35thx ddbgというのもあるんだね 今度試してみるよ
VS2005でうまくいけば一番いいんだけども
_Dmainに関数ブレイクポイントを設定して頭からステップ実行するしかできてなくて不便
行ブレイクポイントを設定しても「このドキュメントのシンボルが読込まれていません。」と表示されて
ブレークポイントが無効化されてしまう
これは設定でなんとかなるのかな?
0134デフォルトの名無しさん
2007/07/27(金) 21:27:04あとasm{int 3;}がブレイクポイントになる。
過去スレにあった
0135デフォルトの名無しさん
2007/07/27(金) 23:02:56VS がシンボル情報を認識できているってこと?
どうやるんだろう
>>134
-op をやるだけではダメだった
シンボル情報がないから対応するソースを表示できないって怒られた
asm はちゃんとブレークポイントになったよ
0136デフォルトの名無しさん
2007/07/27(金) 23:12:44map ファイルに出てくる他のシンボル名で関数ブレークポイントを設定したらどの関数でもうまくいった
VS に map ファイルの内容をシンボル情報として使ってもらう方法をどなたかご存じないですか?
0137デフォルトの名無しさん
2007/07/28(土) 00:53:33VS ではどうしようもない気がしてきたんですが・・・ orz
オブジェクトファイルの形式が違うからなあ・・・
0138デフォルトの名無しさん
2007/07/28(土) 03:31:24ddbg 試してみたけど出力に多バイト文字含んでると落ちるね
ddbg を実行するディレクトリ名とか・・・
ddbg は Code::Blocks をフロントエンドとして動作できるらしいからそっちに期待してみる
前スレの人は失敗に終わったようだが・・・
0139デフォルトの名無しさん
2007/07/28(土) 19:34:22{ HAGE = 11, HIGE = 22, HUGE = 33, HOGE = 999, }
template Bar(T)
{ const char[] Bar = T.stringof; }
void main()
{
/* ちゃんとHAGE HIGE HUGE HOGEが表示される */
foreach (str; __traits(allMembers, Foo))
{
printf("%.*s\n", str);
}
Foo foo;
printf("%.*s\n", Foo.stringof); //"ushort"が表示される
printf("%.*s\n", (Foo).stringof); //"ushort"が表示される
printf("%.*s\n", foo.stringof); //"ushort"が表示される
printf("%.*s\n", Bar!(Foo)); //"ushort"が表示される
}
どうすればFooという型から(コンパイル時評価可能な)文字列"Foo"を取得できるんだ?
0140デフォルトの名無しさん
2007/07/28(土) 19:59:14template Bar(T)
{invariant Bar = (T[]).stringof[0..$-2]; }
でOK
0141デフォルトの名無しさん
2007/07/28(土) 20:17:53素敵な回避策だ。
トンクス!
0142デフォルトの名無しさん
2007/07/28(土) 21:45:04〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <こいつ最高にアホ
彡、 |∪| /
/ __ ヽノ /
(___) /
∩___∩
| ノ ヽ !
/ ● ● | こいつも最高にアホ
| ( _●_) ミ
彡、 |∪| / .\
/ __ ヽノ / \ ...\
(___) / .│ ..│
/ ヽ
l..lUUU
.U
0143デフォルトの名無しさん
2007/07/28(土) 23:02:350144名無しさん@そうだ選挙に行こう
2007/07/29(日) 15:24:360145名無しさん@そうだ選挙に行こう
2007/07/29(日) 18:26:52考えてみたけど、インライン化やメンバをfinalにする、Rangeオブジェクトをスタックに置く等が行われれば、
案外いい感じに最適化されるんじゃなかろーかという気がした。
あとRangeクラスはあると実際便利なので、標準で入ってて欲しいなーという願望もあったり。
パフォーマンスを気にしてクラス作るのを敬遠しちゃって、
コードの可読性とかで大きく損をしてるケースを沢山見るのよねぇ。かなり歯がゆい気分になる。
D言語には是非とも、クラス化のリスクを徹底的に減らすような最適化を推進してもらいたいデス。
ところでForeachRangeStatementの箇所がまだ翻訳されてないんで自信無いけど、
Rangeとして書けるのは整数だけ?
いくつかの演算子が適用できればオブジェクトでも行けるようにも読める気がするけど。
0146名無しさん@そうだ選挙に行こう
2007/07/29(日) 18:30:25イテレータにも使えるとWalter氏が言ってたような…
0147名無しさん@そうだ選挙に行こう
2007/07/29(日) 18:45:36ForeachRangeStatementは今のところスカラーな数値(整数/実数/虚数)だけ。
ただ、構造体/クラスに対応する考えはあるみたい。
news://news.digitalmars.com:119/[email protected]
0148デフォルトの名無しさん
2007/07/29(日) 22:10:51int[5] a;
foreach(p; &a[0] .. &a[$-1])
writefln(p);
}
ポインタ型にも適用できるけど、型の大きさにかかわらず1刻みになるようだな。
0149デフォルトの名無しさん
2007/07/30(月) 14:53:190150デフォルトの名無しさん
2007/07/30(月) 15:01:130151デフォルトの名無しさん
2007/07/30(月) 15:14:150152デフォルトの名無しさん
2007/08/03(金) 00:01:060153デフォルトの名無しさん
2007/08/03(金) 16:57:550154デフォルトの名無しさん
2007/08/03(金) 17:04:450155デフォルトの名無しさん
2007/08/03(金) 20:25:180156デフォルトの名無しさん
2007/08/03(金) 22:47:100157デフォルトの名無しさん
2007/08/03(金) 22:48:31Tupleを返せたらいいんだけどな
なんでできないんだ
0158デフォルトの名無しさん
2007/08/04(土) 01:21:340159デフォルトの名無しさん
2007/08/04(土) 03:43:070160デフォルトの名無しさん
2007/08/04(土) 04:12:09タプル自体の構成を変更したりはできないけど、
タプルの各要素を実行時に変更するのはOK。
ので、
int n; char[] str;
Tuple!(int,char[]) retTupleFunc(){ return Tuple!(3,"hoge".dup); }
Tuple!(n,str) = retTupleFunc();
というような感じのが、もっとマシな構文で実現される整合性の余地はある。
0161デフォルトの名無しさん
2007/08/04(土) 04:19:570162デフォルトの名無しさん
2007/08/04(土) 04:24:44まだ使ってない記号を導入するつもりはないんだろうかね。
0163デフォルトの名無しさん
2007/08/04(土) 04:42:07a,b,c = f();
で済むようにすりゃ簡潔でいいと思う。
f(x,y,z)とかf((x,y),z)とかやるときも構文の不整合起こさないで済みそうだし。
0164デフォルトの名無しさん
2007/08/04(土) 11:01:11それ、不整合を起こさないためには必須だけど代わりの構文が無いと困る。
0165デフォルトの名無しさん
2007/08/04(土) 11:07:02Luaでそんなことやってたけど、
便利だわな
0166デフォルトの名無しさん
2007/08/04(土) 13:40:380167デフォルトの名無しさん
2007/08/04(土) 15:18:03これは C++ だが。
http://www7b.biglobe.ne.jp/~robe/pf/pf011.html
0168デフォルトの名無しさん
2007/08/04(土) 15:54:29struct S {
static void opAssign(int a) { writefln(a); }
}
struct ST(T) {
static void opAssign(int a) { writefln(a); }
}
void main() {
S = 1; // ok
ST!(int) = 1; // error
ST!(int).opAssign(1); // ok
}
0169デフォルトの名無しさん
2007/08/04(土) 17:18:08STI = 1;
とすれば通るけどね
0170デフォルトの名無しさん
2007/08/04(土) 17:42:19まあ仕様じゃなくてバグだろう。
0171デフォルトの名無しさん
2007/08/05(日) 01:13:41むちゃくちゃ好きだったLuaとSquirrelだけど
D言語にはまった以降いらなくなってしまった・・・
0172デフォルトの名無しさん
2007/08/05(日) 01:16:160173デフォルトの名無しさん
2007/08/05(日) 07:11:480174デフォルトの名無しさん
2007/08/05(日) 11:56:590175デフォルトの名無しさん
2007/08/05(日) 12:03:280176デフォルトの名無しさん
2007/08/05(日) 12:22:53http://www5.ocn.ne.jp/~tane/diary/d2007_02.html
0177デフォルトの名無しさん
2007/08/05(日) 12:24:50ありがとうございます
調べたら色々出てきたので
いくつか比較してみたいと思います
ttp://www.autla.com/news/index.php?GUI%B3%AB%C8%AF%A4%CB%A4%C4%A4%A4%A4%C6
0178デフォルトの名無しさん
2007/08/06(月) 11:56:11これってどうなんじゃろ? 仕様外?
0179デフォルトの名無しさん
2007/08/06(月) 12:50:220180デフォルトの名無しさん
2007/08/06(月) 13:09:37間違いなくコンパイラのバグだと思うけど。
0181デフォルトの名無しさん
2007/08/06(月) 13:11:52inが通るのが?
それともoutが通らないのが?
0182デフォルトの名無しさん
2007/08/06(月) 14:26:28コンパイラにバグがあるのは確定。
関数リテラルでは"FunctionBody"が書ける仕様になってる。
これはin、out、bodyが書ける構文要素のことなので、
outを書けないのはバグ。
inが書けるのは仕様通り。
delegateを省略した場合に事前・事後条件が書けないのはバグ。
0183デフォルトの名無しさん
2007/08/06(月) 14:57:24char[]をnullに出来ないので困っていたりする。
func(char[] str){
win32api(toStringz(str));
}
func(null);
とするとnullが""に暗黙変換されちゃって、funcにnullが持ち込めない。
nullableみたいのって無かったっけ?
0184デフォルトの名無しさん
2007/08/06(月) 15:16:560185183
2007/08/06(月) 15:31:32func()と同じ理由でtoStringz()もnullを受け取ることはできないので、あまり意味はないかと。
toStringz(null)はtoStringz("")として呼び出される事になるので。
って、そう考えるとtoStringz()も使っちゃダメってことじゃないか。
めんどくせーなー。
0186デフォルトの名無しさん
2007/08/06(月) 15:41:08実行時に "Error: Stack Overflow" ってなるんだけど、何が悪いのでしょうか?
DMD 2.003を使ってます。
0187184
2007/08/06(月) 16:05:29いやいやいや、toStringzにnull渡してないから。こう。
void func(char[] str){
win32api(str is null ? null : toStringz(str));
}
実際には何回もつかうだろうから関数化すりゃいいと思う。
> toStringz(null)はtoStringz("")として呼び出される事になるので。
違う。nullはnull。toStringzの実装が特に""とnullを区別してないだけで
0188デフォルトの名無しさん
2007/08/06(月) 16:06:30str is null ? null : toStringz(str)
なのに
toStringz(null)
が出てくる理由がわからんし、
ポインタ型にnullを渡すと(p==0)になるでしょ常考。
0189デフォルトの名無しさん
2007/08/06(月) 16:10:06writefln(array[out(i) { assert(i<a.length); } body { return 4; }()]);
仕様によれば、こういう変態的なコードもありなんだな
これ試してて気づいたんだが、
writefln(array[{ return $-1; }()]); が、
writefln(array[{ return array.length-1; }()]); と等価になってないっぽい。
0190デフォルトの名無しさん
2007/08/06(月) 16:15:23>>186
DMDのバグ
0191デフォルトの名無しさん
2007/08/06(月) 16:24:44空のchar[]とnullは区別できないよ。
import std.stdio;
void main() {
writefln("" is null); // false
// 文字列リテラルはNULターミネータを持っている。
char[] s;
writefln(s is null); // true
// 配列の初期値はnull
s = "".dup;
writefln(s is null); // true
// NULターミネータは複製されない。
s = "aa".dup; s.length = 0;
writefln(s is null);
// 長さを 0 にしても再利用のため(?)に同じ場所を指し続けている
}
0192デフォルトの名無しさん
2007/08/06(月) 16:50:58import std.stdio;
void main() {
string a = "";
writefln(a is null); // false
writefln(a == null); // true
}
0193デフォルトの名無しさん
2007/08/06(月) 17:41:040194デフォルトの名無しさん
2007/08/06(月) 21:06:38なるほど
0195デフォルトの名無しさん
2007/08/06(月) 21:52:03とかどうよ
0196183
2007/08/06(月) 21:58:03・配列はnull値を取れない
・nullは長さ0の配列に暗黙変換される
とばかり思ってました。
えーと、正しくはこういうこと、でいいんでしょうか?
・配列はnull値を取れる
・null配列はほとんどの場面で長さ0の配列と同じ挙動をする
・両者はis nullの結果で区別できる
>>184さんごめんなさい。正しくその書き方で事足りました。
みんなもありがとう。おかげでアホな誤解から解放されました。
でも("".dup is null)がtrueになる理由だけよく分からない……。
0197デフォルトの名無しさん
2007/08/06(月) 22:44:21の配列のデフォルト初期化の項には
> 動的配列は要素数0に初期化されます
て書いてある。
0198デフォルトの名無しさん
2007/08/06(月) 23:00:28・要素数が0になった場合、変数自体がnullに書き換えられる場合がある。
0199デフォルトの名無しさん
2007/08/06(月) 23:20:21結局なんかうやむやなまま今日に至るわけだけれども。
http://yaneu.com/cgi/yanebbs/dobbsr.cgi?a=view&topic_id=1069952491&res_id=542-600
news://news.digitalmars.com:119/[email protected]
0200デフォルトの名無しさん
2007/08/07(火) 05:20:19うむむやはりこれはバグでしたか...
もやもやがすっきりしました
ありがとう賢い人たち
0201デフォルトの名無しさん
2007/08/07(火) 05:47:18(ご迷惑おかけしてすいません)
0202デフォルトの名無しさん
2007/08/07(火) 05:48:210203デフォルトの名無しさん
2007/08/07(火) 08:00:22D言語をいじくる夏休みとはうらやましいかぎりだぞ
0204デフォルトの名無しさん
2007/08/07(火) 08:30:080205デフォルトの名無しさん
2007/08/07(火) 09:42:020206デフォルトの名無しさん
2007/08/07(火) 12:18:16ちょっとコントロールが追加されたくらいかな
0207デフォルトの名無しさん
2007/08/07(火) 22:30:28そしたらあっという間に普及するから。
0208デフォルトの名無しさん
2007/08/07(火) 22:36:51D が流行るのは言語仕様が安定してからでいい。
0209デフォルトの名無しさん
2007/08/08(水) 02:16:300210デフォルトの名無しさん
2007/08/08(水) 02:28:350211デフォルトの名無しさん
2007/08/08(水) 02:41:25void func(int delegate(int) dg);
func( (i) { return i * 2; } );
とか、願わくば
func(i => i * 2);
とか書きたい。
0212デフォルトの名無しさん
2007/08/08(水) 05:41:350213デフォルトの名無しさん
2007/08/08(水) 07:00:490214デフォルトの名無しさん
2007/08/08(水) 08:36:050215デフォルトの名無しさん
2007/08/08(水) 08:47:55現状の戻り値推論だけなら、要求されているdelegate型と
生成したdelegate型が異なれば型エラー出るけど、
なんかその推論をやっちゃうとエラーの元になりそうだな。
むしろ仮引数名の方を省略したい。
(int){return @int * 2;}
みたいな。
普通の関数でも省略できるとなおよし。
0216デフォルトの名無しさん
2007/08/08(水) 12:05:43下手に省略すると、人間もコードから内容を推論しなきゃならなくなるからめんどい
0217デフォルトの名無しさん
2007/08/08(水) 12:31:200218デフォルトの名無しさん
2007/08/08(水) 17:10:170219デフォルトの名無しさん
2007/08/08(水) 18:54:09って感じで、D言語は3.0になったとしてもはやらなそう
0220デフォルトの名無しさん
2007/08/08(水) 20:14:160221デフォルトの名無しさん
2007/08/08(水) 23:38:420222デフォルトの名無しさん
2007/08/08(水) 23:59:340223デフォルトの名無しさん
2007/08/09(木) 00:00:110224デフォルトの名無しさん
2007/08/09(木) 00:05:110225デフォルトの名無しさん
2007/08/09(木) 03:31:04価値ないな…
D言語は変り続けることが美しいのさ…
0226デフォルトの名無しさん
2007/08/09(木) 04:00:04下位互換性を重要視するようになると思うよ
0227デフォルトの名無しさん
2007/08/09(木) 04:00:490228デフォルトの名無しさん
2007/08/09(木) 04:02:150229デフォルトの名無しさん
2007/08/09(木) 04:03:320230デフォルトの名無しさん
2007/08/09(木) 04:05:050231デフォルトの名無しさん
2007/08/09(木) 04:24:350232デフォルトの名無しさん
2007/08/09(木) 04:31:070233デフォルトの名無しさん
2007/08/09(木) 04:34:54何か昔一覧を載せてるサイト(不正確に見えたが)があったけど、見つからない。
0234デフォルトの名無しさん
2007/08/09(木) 07:05:25なんていう表現があったら時々便利そうだなあ
いらんけど
0235デフォルトの名無しさん
2007/08/09(木) 13:15:47ttp://www.kmonos.net/alang/abc/
これか?
0236デフォルトの名無しさん
2007/08/09(木) 13:49:49scope s = File("hoge.txt");
でいいと思うよ。
0237デフォルトの名無しさん
2007/08/10(金) 18:18:190238デフォルトの名無しさん
2007/08/10(金) 18:22:54ttp://pc11.2ch.net/test/read.cgi/tech/1149440647/
0239デフォルトの名無しさん
2007/08/10(金) 23:08:43なんだか誠に申し訳ないw
でもDはDで……仕様確定マダー?
そいやDの仕様もだいぶ増えてきた感があるけど、
まだコンパイラの実装はC++ほど大変でもないんかな?
だとしたらどっかに決定的な違いがあるんだろーか。
教えてC++の偉い人ー。
0240デフォルトの名無しさん
2007/08/10(金) 23:14:38「処理系の作りやすさ」があるから、そうなんだと思うよ。知らないけど。
0241デフォルトの名無しさん
2007/08/11(土) 02:22:030242デフォルトの名無しさん
2007/08/11(土) 02:25:120243デフォルトの名無しさん
2007/08/11(土) 15:01:01なんかわろたw
0244デフォルトの名無しさん
2007/08/11(土) 17:28:29もうD言語使えよと言いたくなる場面ばっかりでわろた
0245デフォルトの名無しさん
2007/08/11(土) 18:00:300246デフォルトの名無しさん
2007/08/11(土) 18:05:45似たような言語に人的資源が分散してるのがもったいない
0247デフォルトの名無しさん
2007/08/11(土) 18:09:410248デフォルトの名無しさん
2007/08/11(土) 18:14:44Dポーティングを念頭に書き換え始めてる
というかDで類似の仕様設計を書き始めてる
でも.NET用のポーティングもありかなと思い始めたり
D#マダー
0249デフォルトの名無しさん
2007/08/11(土) 18:36:03もはや言語がどうこうってところじゃなくなってるんだけどね
0250デフォルトの名無しさん
2007/08/11(土) 18:39:05今作ってもどうせ作り直しになるし。
0251デフォルトの名無しさん
2007/08/11(土) 18:54:19……本当に標準がTangoに置き換わるって信じてもいいのか?
0252デフォルトの名無しさん
2007/08/11(土) 19:01:02それが信じられないから困る
phobosがダメなところとTangoの良いところってどんなのがある?
phobosはダメだダメだと聞くがあまり具体的には出てこなくて
まずは文字コード周りかな
0253デフォルトの名無しさん
2007/08/11(土) 19:07:140254デフォルトの名無しさん
2007/08/11(土) 19:28:40コンテナ(コレクション)についてもTangoがほしいね
あと、ゆくゆくはTangoでXMLもいじれるようになりそう
0255デフォルトの名無しさん
2007/08/11(土) 19:31:310256デフォルトの名無しさん
2007/08/11(土) 19:47:39と思う俺とForeachRangeStatementが2.0だけってことはそろそろ対応お願いしますという
Walterタンの無言の意思表示なのではと思う俺と…
0257デフォルトの名無しさん
2007/08/11(土) 21:09:52美味しい機能《えさ》はv2にしか提供されない。
0258デフォルトの名無しさん
2007/08/11(土) 21:52:100259デフォルトの名無しさん
2007/08/11(土) 22:17:02Tango製作陣からじゃないの
0260デフォルトの名無しさん
2007/08/11(土) 23:43:000261デフォルトの名無しさん
2007/08/12(日) 00:04:50混在できたっけ?
0262デフォルトの名無しさん
2007/08/12(日) 00:23:12無理じゃなかったっけ。前に似た話出てた気がする。
もともと置換を目的に作られてるしなあ。
つか本当に>>255に同意。
なんでここで互換性ないバージョンとか出して既存ライブラリぶっちぎれるのかと。
Phobosお話になんねー、みたいな声はウォルたんに届いてないんだろうか。
0263デフォルトの名無しさん
2007/08/12(日) 00:51:040264デフォルトの名無しさん
2007/08/12(日) 01:17:570265デフォルトの名無しさん
2007/08/12(日) 01:29:210266デフォルトの名無しさん
2007/08/12(日) 01:41:460267デフォルトの名無しさん
2007/08/12(日) 01:44:39見た目が悪すぐる
0268デフォルトの名無しさん
2007/08/12(日) 08:36:17気にしすぎじゃね?
>>240あたりの理由で()付じゃないとダメだという可能性は?
0269デフォルトの名無しさん
2007/08/12(日) 11:03:230270デフォルトの名無しさん
2007/08/12(日) 11:19:19struct{
final {int final_hoge = 0;}
const {int const_hoge = 0;}
invariant{int invariant_hoge = 0;}
}
これでinvariantだけ定数の宣言じゃなくて不変条件になると違和感が漂いすぎるし。
0271デフォルトの名無しさん
2007/08/12(日) 12:25:290272デフォルトの名無しさん
2007/08/12(日) 19:05:21メッセージボックスに日本語出力するだけですげー時間かかって泣きそうだったわ
あとみんなは開発環境何使ってるの?
Eclipse+Descentでやってたらソースにエラーの赤線引いてあるけど見た目どこも問題ないしコンパイル通るし動作するしで微妙だった
0273デフォルトの名無しさん
2007/08/12(日) 19:11:49今公開されてるサンプルコードって大半がD1.0時代のものだと思う(しかも今のD1.0系で動くとも限らない)
少なくとも日本語の文書においては
0274デフォルトの名無しさん
2007/08/12(日) 19:22:34まだまともなIDEはないから、俺は普通のテキストエディタで書いて、コマンドラインからビルドしとるよ。
0275デフォルトの名無しさん
2007/08/12(日) 19:24:11ポセイドンとかどうなんだろ?
0276デフォルトの名無しさん
2007/08/12(日) 19:47:28そーなんか
とりあえず1.0系インスコしたんだけどみんな2.0系使ってるの?
2.0系って正式リリースされてないよね?
>>274-275
そーかー
Code::BlocksとPoseidonも使ってみるよ
コード補完がないとソース書いててだるい気がするしね
0277デフォルトの名無しさん
2007/08/12(日) 20:00:11正式リリースなんて飾り。
0278デフォルトの名無しさん
2007/08/12(日) 20:09:37バージョンが0.001増えるだけで、大幅な書き直しを余儀なくさせられる言語。それがD
0279デフォルトの名無しさん
2007/08/12(日) 20:31:150280デフォルトの名無しさん
2007/08/12(日) 20:31:530281デフォルトの名無しさん
2007/08/12(日) 21:54:14予約語以外までまともにコード補完できるIDEなんてまだないかと
>>279
これのことかな s/stdout/dout/g
import std.cstream;
void main() {
stdout.writefln("Hello, world!"); // 古いコード
}
歴史は繰り返す(Tango)
Cout(Hello, world!").newline;
0282デフォルトの名無しさん
2007/08/12(日) 22:15:35とC++みたいに出力できるのを作ったことがあるがマニピュレータ周りでモチベーションが切れて終了
0283デフォルトの名無しさん
2007/08/12(日) 22:24:480284デフォルトの名無しさん
2007/08/12(日) 22:46:270285デフォルトの名無しさん
2007/08/12(日) 23:12:09C++のストリームの記法が便利だと思ったことは一度も無いな
0286デフォルトの名無しさん
2007/08/12(日) 23:28:32たぶんCのprintfが非型安全だから作られたんだと思うんだが、Dだと型安全な可変個引数関数が作れるわけで。
0287デフォルトの名無しさん
2007/08/13(月) 00:18:06その代償として、寄せ、桁、精度、基数等の指定が必要な場合の
記述が面倒くさすぎ
ぶっちゃけ拡張可能性という面でもstreambufが継承可能であることが
重要で、入出力演算子なんてただのオモチャだと思ってる
0288デフォルトの名無しさん
2007/08/13(月) 00:32:35phobosのwriteflnの方がピンと来るのは俺だけ?
tangoのはどうなんだこれ
CoutとStdoutの使い分けとか必要なのか?
string hoge = "hoge", HOGE = "HOGE";
int a = 10, b = 20;
//phobos
writefln(hoge, a, "[%s%d]", HOGE, b);
//tango
Cout(hoge)(a)("[")(HOGE)(b)("]").newline;
Stdout.formatln("{}{}[{}{}]", hoge, a, HOGE, b);
0289デフォルトの名無しさん
2007/08/13(月) 05:32:210290デフォルトの名無しさん
2007/08/13(月) 06:20:230291デフォルトの名無しさん
2007/08/13(月) 06:44:43入力補完させよーとするとC++かなんかの予約語を補完してくださった
Poseidon使ってみた
日本語表示もできるし予約語の補完もできるし自分で書いたメソッドの入力補完もできるっぽい ちょっと幸せ
でもエディタの挙動とか配色がキモい たぶん変更できるんだろうけどまだあんまし触ってない
0292デフォルトの名無しさん
2007/08/13(月) 07:24:560293デフォルトの名無しさん
2007/08/13(月) 08:07:310294デフォルトの名無しさん
2007/08/13(月) 08:33:23C++ ライクな入出力ストリーム表記はどうにも好きになれん
0295デフォルトの名無しさん
2007/08/13(月) 09:13:18printf ライクにそれを行うことも可能なわけで。
0296デフォルトの名無しさん
2007/08/13(月) 15:42:56tangoはこれならstd::coutのほうがましだな
0297デフォルトの名無しさん
2007/08/13(月) 18:23:02void main(){
println(2,' ',3,' ',4);
}
static import std.string,std.stdio;
alias std.string.toString toString;
string toString(string x){return x;}
string toString(Object o){return o.toString;}
//構造体とか配列とか連想配列とかも同じノリで定義
void println(T...)(T x){
foreach(v;x){
string r = toString(v);
std.stdio.fwrite(r.ptr,1,r.length,std.stdio.stdout);
}
std.stdio.putc('\n',std.stdio.stdout);
}
0298デフォルトの名無しさん
2007/08/13(月) 18:26:370299デフォルトの名無しさん
2007/08/13(月) 19:43:440300デフォルトの名無しさん
2007/08/13(月) 21:48:150301デフォルトの名無しさん
2007/08/13(月) 21:52:16http://pc11.2ch.net/test/read.cgi/tech/1098953121/
0302デフォルトの名無しさん
2007/08/13(月) 22:08:16それでprintf("%08X", n);
とかはどうやりますか?
0303デフォルトの名無しさん
2007/08/14(火) 00:20:211.0限定かよ
0304297
2007/08/14(火) 06:54:07自分の書いた奴だと残念だけど不可能。
個人的にはそういう豪華な書式機能はいらないから、
安全で読みやすい出力用関数が欲しいという立場。
writefもprintfも書式文字列をコンパイル時に検証できないのが微妙。
0305デフォルトの名無しさん
2007/08/14(火) 15:00:17のOpenGL使おうとするとリンクエラーになる(dmd1.020)んだけども、修正方法わかる人いる?
Derelictはやたらでかいんであんま使いたくないんだけど。
implib使ってopengl32.libを自分で吐かせたりしたけども、駄目だった。
0306デフォルトの名無しさん
2007/08/14(火) 17:10:36/*
version (Win32) {
private import std.c.windows.windows;
extern(Windows):
}
else {
extern(C):
}
*/
private import std.c.windows.windows;
extern(Windows):
linuxは手元にないからわからない
0307デフォルトの名無しさん
2007/08/14(火) 18:11:46ありがとうおかげで動いた。
関係ないがstd.c.windows.windowsのインポートは消しても別にエラーにならないな。
当該部分全消しでextern(System):にしておけば他環境でも元のコードと意味変わらんと思うので、とりあえずこれでいきます。
0308デフォルトの名無しさん
2007/08/15(水) 15:44:03一番エレガントで高性能に思える。printf的な書式指定も可能になったし。
ただ標準出力ストリームはSystem.outなんてのじゃなくて変数stdoutとかにして欲しいところ。
あとTangoって、モジュール名がUpperCamelなのが解せないのよね。tango.core.Arrayとか。
Dのスタイルガイドからすればtango.core.arrayが推奨なのに。
それとtanto.util.foo.Barはほとんどtango.foo.Barで良いと思う……。
0309デフォルトの名無しさん
2007/08/15(水) 23:21:160310デフォルトの名無しさん
2007/08/15(水) 23:28:020311デフォルトの名無しさん
2007/08/16(木) 01:06:340312デフォルトの名無しさん
2007/08/16(木) 01:22:05printf()の非効率とおさらばできる(かもしれない)
0313デフォルトの名無しさん
2007/08/16(木) 01:51:30・フォーマット文字列からメソッドシグネチャを生成するため、
コンパイラが引数の型や数をチェックをできる
・フォーマット文字列の解釈やコードの生成がコンパイル時に行われるため、
コンパイラによる高度な最適化が期待できる。
こんなところか。
0314デフォルトの名無しさん
2007/08/16(木) 01:56:25そか サンクス
誰か実装してくれないかなぁ・・・・
0315デフォルトの名無しさん
2007/08/16(木) 02:31:180316デフォルトの名無しさん
2007/08/16(木) 02:37:51バイナリのサイズが増えるのが欠点か。
あと文字列の出力って、たぶん出力先のほうがネックになると思うから、フォーマット文字列をノーコストで解釈しても速度面がそれほど期待できるとは思えない。
(これはまあ、まあもちろん出力先によるんだろうが)
でも引数のチェックは魅力的。
0317デフォルトの名無しさん
2007/08/16(木) 02:38:530318デフォルトの名無しさん
2007/08/16(木) 02:48:56なんだか非常にわくわくしてくるのだよな。
あと何年わくわくし続ければいいですか。
0319デフォルトの名無しさん
2007/08/16(木) 08:22:22あまり大規模なライブラリは作る気がしない。
0320デフォルトの名無しさん
2007/08/16(木) 10:06:25Dを使っているかぎりずっとわくわくしていられるよ…
0321デフォルトの名無しさん
2007/08/16(木) 10:15:33俺は泣いた
0322デフォルトの名無しさん
2007/08/16(木) 10:30:07それは永遠に実装されないという(ry
0323デフォルトの名無しさん
2007/08/16(木) 19:01:44DでもC++でテンプレート使いまくった時のような
code bloatが多少問題になったりするんだろーか。
あんま気にしなくても、とは思うが。
あと、フォーマット後に外部出力が必ず伴うとも限るまい……と思ったけど、
フォーマットってだいたい出力のために行う作業なんだな、考えてみると。
やっぱそれより型安全の魅力か。
0324デフォルトの名無しさん
2007/08/17(金) 01:16:550325デフォルトの名無しさん
2007/08/17(金) 01:18:57これはもうカンファレンス後だろうな・・・・・
0326デフォルトの名無しさん
2007/08/17(金) 04:14:09format使ってみたけどバッファサイズ気にしなくて済む利点の方が大きいと思ったよ
0327デフォルトの名無しさん
2007/08/17(金) 04:15:00>>381 にどんなレスが付くのか
わくわくして待つことにするよ
0328デフォルトの名無しさん
2007/08/17(金) 07:51:060329デフォルトの名無しさん
2007/08/17(金) 08:20:020330デフォルトの名無しさん
2007/08/17(金) 13:24:41横板にペンキのようなレス
0331デフォルトの名無しさん
2007/08/18(土) 10:57:570332デフォルトの名無しさん
2007/08/18(土) 15:31:25>>309 やってみてる人いるのかな
TMP慣れてないから難しいや
最終的にどういう関数(群)に展開したらいいのかわかってないからなおさらだけど
試しにこんな感じでやってみたが構造体使ってていまいち・・・
Writef!("[%s](%d)<%f>")("hoge", 1, 0.5);
template Writef(string fmt) {
struct Writef {
static Writef opCall(U...)(U u) {
...
0333デフォルトの名無しさん
2007/08/18(土) 15:34:440334デフォルトの名無しさん
2007/08/18(土) 16:46:48mixin("void Writef(arguments){...}");
}
でいいんじゃないかな。
0335デフォルトの名無しさん
2007/08/18(土) 22:19:00void tprintf(FormatToTypeTuple!(fmt) arg){
printf(fmt, arg);
}
}
あとはFormatToTypeTupleを別途定義すれば、たぶんOK。
0336デフォルトの名無しさん
2007/08/18(土) 22:26:110337デフォルトの名無しさん
2007/08/18(土) 23:14:490338デフォルトの名無しさん
2007/08/18(土) 23:36:23ダウト!
0339デフォルトの名無しさん
2007/08/19(日) 11:01:22alias tprintf!("h%do%dge") p;
p(3,4);
0340デフォルトの名無しさん
2007/08/19(日) 11:36:21お前がダウトだよ。
printfに違う型渡したバグで、何回悩んだんだよ。お前の人生は。
0341デフォルトの名無しさん
2007/08/19(日) 11:39:46コンパイル時に型が分かるなら、
リアルタイムでコンパイルすればコード編集時にも型が分かる。
ならオートコンプリートも効くし、コード打ってる最中に赤線引いて指摘もできるべ。
まぁ、そんな贅沢なIDEが利用できるとこまで行くかという悲しい疑問もあるけれど(´・ω・`)
それに外部入出力のテストって、他に比べてややこしい性質があると思う。
コンソール出力なら人間の目でチェックするのがまずデフォだし、
リダイレクトとかして自動化するにも
少しだけ設計を工夫する必要があったり、手間がかかったり。
発見や修正が容易とは言えないんじゃねーかな。
0342デフォルトの名無しさん
2007/08/19(日) 16:33:040343デフォルトの名無しさん
2007/08/19(日) 19:34:16カワエエ...
0344デフォルトの名無しさん
2007/08/19(日) 19:37:090345デフォルトの名無しさん
2007/08/19(日) 20:47:13> 上4行
だから、printfでそれがなされても大してうれしくねーだろ。
> 下5行
>コンソール出力なら人間の目でチェックするのがまずデフォだし、
はーん?なら型厳密になっても発見や修正が容易とはいえねーだろ。何が言いたいの?
0346デフォルトの名無しさん
2007/08/19(日) 22:23:50フォーマット文字列に合わせて、補完候補が絞り込まれるなら俺は便利だと思う。
0347デフォルトの名無しさん
2007/08/19(日) 23:48:220348デフォルトの名無しさん
2007/08/20(月) 03:11:350349デフォルトの名無しさん
2007/08/20(月) 09:25:05そのよろしくない点を考察してまとめたページとかってどっかにない?
型安全でないとかはわかるけど、他にどういう問題があるのか
ちゃんと知っておきたくなってしまった。
0350デフォルトの名無しさん
2007/08/20(月) 09:35:16デバッグ出力のためにあちこちにprintfが散乱してて、リリース時に取り除くのが面倒になるから・・・とか言う話を聞いたことが。
まともなデバッグトレースの処理用意してないのが悪いんでしょうけど。
0351デフォルトの名無しさん
2007/08/20(月) 09:59:050352デフォルトの名無しさん
2007/08/20(月) 10:56:15動的に出力内容を帰る事ができないって事?
0353デフォルトの名無しさん
2007/08/20(月) 11:00:370354デフォルトの名無しさん
2007/08/20(月) 11:51:17ここまでいったら逆に楽しそうだな
0355デフォルトの名無しさん
2007/08/20(月) 11:53:160356デフォルトの名無しさん
2007/08/20(月) 14:54:31この手の実行時にしか気づかない欠陥を生み出さないような機構はほしい。
0357デフォルトの名無しさん
2007/08/20(月) 19:56:05英語読まないとダメ?
0358デフォルトの名無しさん
2007/08/20(月) 20:12:000359デフォルトの名無しさん
2007/08/20(月) 20:19:000360デフォルトの名無しさん
2007/08/20(月) 22:13:18>>356はどこもおかしくないんじゃね
0361デフォルトの名無しさん
2007/08/20(月) 22:20:06string user_input = "%d";
0362デフォルトの名無しさん
2007/08/20(月) 22:43:43エスケープし忘れか
関数定義のすぐそばにちゃんとunittestを書くのがD言語流じゃね
0363デフォルトの名無しさん
2007/08/20(月) 23:10:37そういうものが用意されてりゃ問題ない気がするな
0364デフォルトの名無しさん
2007/08/20(月) 23:40:300365デフォルトの名無しさん
2007/08/21(火) 00:14:520366デフォルトの名無しさん
2007/08/21(火) 00:56:580367デフォルトの名無しさん
2007/08/21(火) 14:38:01あるいはwcharとdcharを廃止してversion(Unicode)とかでUTF8/UTF16/UTF32が切り替わるcharオンリーにするか…
0368デフォルトの名無しさん
2007/08/21(火) 14:51:500369デフォルトの名無しさん
2007/08/21(火) 15:20:18それぞれ明示的に扱いたいときはcchar, wchar, dcharを使うようにして。
0370デフォルトの名無しさん
2007/08/21(火) 15:32:13コンパイル時の-versionスイッチに応じてchar/wchar/dcharと定義が変わる文字列型
要はWindowsプログラミングをしてるとLPCTSTRとかでてくるあれ…
0371デフォルトの名無しさん
2007/08/21(火) 15:40:300372デフォルトの名無しさん
2007/08/21(火) 15:43:380373デフォルトの名無しさん
2007/08/21(火) 15:45:53Windowsでもそろそろ要らん気がする
もう9xとかどうでもよくね?
0374デフォルトの名無しさん
2007/08/21(火) 16:05:590375デフォルトの名無しさん
2007/08/21(火) 16:08:42version(Library > 3) {`}else{ }
とかできたらよさそうなのに。
0376デフォルトの名無しさん
2007/08/21(火) 17:33:28constに暗黙キャストできるものをコンパイル時に参照っていうの?
0377デフォルトの名無しさん
2007/08/21(火) 17:44:05かな?
0378デフォルトの名無しさん
2007/08/21(火) 19:10:54日本のDのソースは全部wchar^^
0379デフォルトの名無しさん
2007/08/21(火) 19:22:340380デフォルトの名無しさん
2007/08/21(火) 20:22:590381デフォルトの名無しさん
2007/08/21(火) 20:54:46はダメなの?
0382デフォルトの名無しさん
2007/08/21(火) 20:57:510383デフォルトの名無しさん
2007/08/21(火) 21:24:21全角パスが上手く処理できなかったりした。モノによるんだろうけど全角パスで起動しなかったり
最近はWindowsプログラム書いてないから判らないけど
0384デフォルトの名無しさん
2007/08/21(火) 22:37:120385デフォルトの名無しさん
2007/08/21(火) 23:48:34wchar[] toWString(char[] src) {
wchar[] dst = new wchar[0];
foreach(dchar ch;src){
dst~=cast(wchar)ch;
}
return dst.dup;
}
こういうのは?
foreachで渡ってくる各要素をdcharで受け取るとUNICODE文字単位に分解してくれるらしいっす。
そこから目的の文字型にキャストして連結してやれば変換できるんじゃないかな……と。試してないけど。
0386デフォルトの名無しさん
2007/08/22(水) 00:04:120387デフォルトの名無しさん
2007/08/22(水) 00:05:55サロゲートペアが必要なときにおかしくなる。
0388デフォルトの名無しさん
2007/08/22(水) 01:02:56しょうもない質問で申し訳ないです
std.string.succが出力する26進数(A,...,Z,AA,AB,...)を10進数に変換したいんですけどうまく書けません orz
どういうコードになるんでしょうか
0389デフォルトの名無しさん
2007/08/22(水) 01:24:03uint 二十六進数(in string src)
in {
assert(countchars(src, uppercase) == src.length);
}
body {
uint r;
foreach(c; src)
r = r * uppercase.length + find(uppercase, c) + 1;
return r;
}
void main()
{
string s = "A";
foreach(i; 1..100) {
assert(i == 二十六進数(s));
s = s.succ();
}
}
0390デフォルトの名無しさん
2007/08/22(水) 02:39:42ありがとうございます!
0391デフォルトの名無しさん
2007/08/22(水) 20:14:39extern(Windows){
int MessageBoxW(void*, wchar*, wchar*, uint);
}
void main()
{
//MessageBoxW(null, (cast(wchar[])("メッセージ")).ptr, (cast(wchar[])("タイトル")).ptr, 0);
MessageBoxW(null, "メッセージ"w.ptr, "タイトル"w.ptr, 0);
}
コメントアウトしてる方だと通るけど下のだと通らないんだが何かこれ違うのか?
0392デフォルトの名無しさん
2007/08/22(水) 21:29:15utf-8, dmd1.020, Windows
0393デフォルトの名無しさん
2007/08/22(水) 21:29:22"メッセージ"w の型は invariant(wchar)[] だから、
"メッセージ"w.ptr の型は invariant(wchar)*
これを wchar* に暗黙的にキャストすることはできない。
LPCWSTR は const(wchar)* にするのがいいよ。
これなら wchar* からも、invariant(wchar)* からも暗黙的にキャストできる。
0394デフォルトの名無しさん
2007/08/22(水) 21:41:02それから、invariant型の文字列リテラルを普通の配列にキャストするのはオススメできない。
どこかで書き換えようとしてしまった場合に、わけのわからんエラーが発生する可能性がある。
書き換え可能な配列が必要な場合は "メッセージ"w.dup を使うようにするといいよ。
0395デフォルトの名無しさん
2007/08/22(水) 21:41:53スマンコ 俺dmd2.003だった
>>393
ご教授の通り
int MessageBoxW(void*, const(wchar)*, const(wchar)*, uint);
にしてみたらどっちでも通るようになったよ ありがとー
今までGUIプログラムはJavaでしか作ったことないからWindowsのことはサパーリすぎて
LPCWSTRとかなんのことか分らんけどジリジリ勉強していくよ
0396デフォルトの名無しさん
2007/08/22(水) 21:43:300397デフォルトの名無しさん
2007/08/22(水) 21:53:18把握
MessageBoxW(null, "メッセージ"w.dup.ptr, "タイトル"w.dup.ptr, 0);
とかしろってことか?
>>396
ヒントさんくす ぐぐってみるよ
0398デフォルトの名無しさん
2007/08/22(水) 21:54:080399デフォルトの名無しさん
2007/08/23(木) 03:16:530400デフォルトの名無しさん
2007/08/23(木) 14:12:48○デバッガが動くようになった(Ddbgと正しく同期が取れるようになったよう)←私だけか?
○フォーマッターが実装されたみたい
○アウトラインが実装されてる
○コードテンプレートが実装されてる
×コンパイラ選択できるのにコンパイルしてくれない
出力先まで指定できるのに・・・(もう少しで実装されるのかも)
×コードアシストできない
×メソッドの宣言先を開けない、参照を検索できない
かなり良い感じで進化しているようです。
0401デフォルトの名無しさん
2007/08/23(木) 15:10:450402デフォルトの名無しさん
2007/08/23(木) 15:12:43行きたかった・・・
0403デフォルトの名無しさん
2007/08/23(木) 15:42:26シアトルだよ
日本でやってほしいなぁ。
0404デフォルトの名無しさん
2007/08/23(木) 15:58:110405デフォルトの名無しさん
2007/08/23(木) 16:00:47うをを。DescentてEclipseプラグインのアレだよね。
俺もちょっと入れてみよう。
デバッガが動くのか……
0406デフォルトの名無しさん
2007/08/23(木) 16:18:27せめて北海道〜九州くらいなら考えるんだがシアトルなんか行けないや
0407デフォルトの名無しさん
2007/08/23(木) 17:48:45日本で開催されるわけないだろw
0408デフォルトの名無しさん
2007/08/23(木) 17:51:320409デフォルトの名無しさん
2007/08/23(木) 18:03:47英語できる人少ないから開発やデバッグへの貢献度が低いと見なされてそう
日本でミニカンファレンス開催して意見や要望や成果等をまとめてウォルタンに提出したりするのは良いアイデアかもしれん
先立つものがないけどな
0410デフォルトの名無しさん
2007/08/23(木) 18:32:440411デフォルトの名無しさん
2007/08/23(木) 18:35:460412デフォルトの名無しさん
2007/08/23(木) 18:37:32じゃ あとはまかせた
>>411 報告しといたってレスついてるのは報告されてるけど
それ以外は質問者が報告してないのなら誰も報告してないんじゃね
0413デフォルトの名無しさん
2007/08/23(木) 20:12:44既存のwikiにうんざりして自前でDのWikiを実装しようと計画して何もしてない俺。
k.inabaたんのdikiでも荒らしてくるか
0414デフォルトの名無しさん
2007/08/23(木) 20:24:490415デフォルトの名無しさん
2007/08/23(木) 20:55:27いっそWebサーバとWebアプリケーションフレームワークを作ってくれ
0416デフォルトの名無しさん
2007/08/23(木) 20:57:490417デフォルトの名無しさん
2007/08/23(木) 21:26:28そんなのいつものことじゃんw
0418デフォルトの名無しさん
2007/08/23(木) 21:41:08よく考えたら通信ライブラリも碌なのがないんだよな。
Tangoのもちゃちっぽいし。
0419デフォルトの名無しさん
2007/08/23(木) 23:21:36どちらかといえば、パッケージウェア作るための強力な言語になってもらいたいなぁ。
0420デフォルトの名無しさん
2007/08/24(金) 00:35:17大部分のMangoはTangoに吸収されたけど、プラスアルファなライブラリとして
こっち系に特化してくらしい。ちなみにMangoに入ってる文字コード変換のICUも
お手軽で便利だよ。(ICU本体のサイズは馬鹿デカイが)
0421デフォルトの名無しさん
2007/08/24(金) 00:54:17それいいな
あれのC++インタフェースはダサダサだからな……
0422デフォルトの名無しさん
2007/08/24(金) 17:29:13bool nonNull(T : object)(T x) { return x !is null; }
bool lessThan(T)(T max, T x) { return x < max; }
class C {
object getObject(object[] a, uint i @ lessThan(a.length)) @ nonNull { return a[i]; }
int a @ lessThan(5);
}
これが、
class C {
object getObject(object[] a, uint i)
in { assert(i < a.length); }
out(o) { assert(o !is null); }
body { return a[i]; }
int a;
invariant(){ assert(a < 5);}
}
みたいになるの。
定義と契約を近い位置に書けて、結構いいと思うんだけどなあ。
0423デフォルトの名無しさん
2007/08/24(金) 19:34:44契約のテンプレートみたいな?
0424デフォルトの名無しさん
2007/08/24(金) 20:26:07上と下でそんなに書き易さが違うとも思えないのだが…
0425デフォルトの名無しさん
2007/08/24(金) 22:32:35何いってんの?
0426デフォルトの名無しさん
2007/08/24(金) 22:47:31Dにゃ.classみたいな独自のコンパイル形式無いし(ああ欲しい)。
ん? それも込みでってことか?
でもDの契約に関しては、確かに>>422くらいのが欲しいって気はする。
特にIDEとかddocとかに優しくない。
たとえばこう書いたら、
bool nonNull(T : object)(T x) { return x !is null; } /// nullではない。
bool lessThan(T)(T max, T x) { return x < max; } /// @{max}未満。
ddocとか、IDEでgetObjectをポイントしたときのツールチップには
こう出てきて欲しいなぁって。
object getObject(object[] a, uint i)
(中略)
契約:
a: nullではない。[nonNullへのリンク]
i: a.length未満。[lessThanへのリンク]
戻り値: nullではない。[nonNullへのリンク]
0427デフォルトの名無しさん
2007/08/24(金) 23:19:24すまね。Javaは知らんわ。
0428デフォルトの名無しさん
2007/08/24(金) 23:57:520429デフォルトの名無しさん
2007/08/25(土) 00:00:500431デフォルトの名無しさん
2007/08/25(土) 01:00:25そのまんまJavaのアノテーションとは関係なくて
DbCの構文糖が欲しいという話じゃねーの
in-out-body構文はちょっと異端すぎるからな
>>428
どっかに報告上がってないのかな
0432デフォルトの名無しさん
2007/08/25(土) 02:34:29くやしいのぅくやしいのぅ
公式とWalterたんのサイトとWiki4Dとdigitalmars.Dには情報出てない気がする
英語読めないからもしかしたら書いてあるのかもしんないけど
0433デフォルトの名無しさん
2007/08/25(土) 03:42:15ttp://larsivi.net/blog/
どうやら参加できなかった人
ttp://dblog.aldacron.net/2007/08/23/the-2007-d-programming-language-conference/
まぁ、大した情報はない。結構オフ会的な雰囲気っぽいし。FAQによれば、
* Will the conference be video taped?
Yes, though it will take some time to process them.
とのことなので、そのうちどっかに動画がアップロードされるかもね。
0434デフォルトの名無しさん
2007/08/25(土) 18:57:420435デフォルトの名無しさん
2007/08/25(土) 19:20:030436デフォルトの名無しさん
2007/08/25(土) 19:50:19ttp://video.google.com/videoplay?docid=-7073020265668105471
0437デフォルトの名無しさん
2007/08/25(土) 21:49:280438デフォルトの名無しさん
2007/08/25(土) 21:58:200439デフォルトの名無しさん
2007/08/25(土) 22:23:210440デフォルトの名無しさん
2007/08/25(土) 23:07:230441デフォルトの名無しさん
2007/08/25(土) 23:11:140442デフォルトの名無しさん
2007/08/25(土) 23:19:33その言語仕様が ころころ変わるので実用にむいてない。
0443デフォルトの名無しさん
2007/08/26(日) 00:02:42そのためにブランチしたんだと思っていたけど・・・
0444デフォルトの名無しさん
2007/08/26(日) 00:11:150445デフォルトの名無しさん
2007/08/26(日) 00:36:581.xにはもう大きな変更はないと思うよ
変更するメリットないだろ
遊ぶなら2.xなんだけど今のwin32.windowsをimportして
Ansi/UnicodeスイッチできるようにTCHAR[]を使って
Windowsプログラミングをすると.dup.ptrの嵐になってひどいことに
TCHAR[]相当の型を考え直さないといけないな
0446デフォルトの名無しさん
2007/08/26(日) 01:14:300447デフォルトの名無しさん
2007/08/26(日) 04:15:26実用性の話はしらんけど
0448デフォルトの名無しさん
2007/08/26(日) 11:14:160449デフォルトの名無しさん
2007/08/26(日) 11:23:54Haskellが意外に使われててびっくりした
スレの過疎ぶりから、てっきり終わった言語だと思ってたのだが
0450デフォルトの名無しさん
2007/08/26(日) 11:42:48ML系列とかはそれほどでもないね
PythonはRubyより人気高いね
勿論投稿者の層が偏っているというのはあるだろう
多分学術系寄りに(というか情報科の学生に)
そう思えば大して意外な結果でもないな
0451デフォルトの名無しさん
2007/08/26(日) 14:15:360452デフォルトの名無しさん
2007/08/26(日) 14:16:10http://d.puremagic.com/conference2007/speakers.html
0453デフォルトの名無しさん
2007/08/26(日) 14:31:40Functions & Templates OverloadingとUniform Function Call Syntaxはやっとという感じ。
って事で次verまだー?
0454デフォルトの名無しさん
2007/08/26(日) 15:03:010455デフォルトの名無しさん
2007/08/26(日) 15:56:180456デフォルトの名無しさん
2007/08/26(日) 21:00:51これは・・・
どこかのエロい人がいくつかピックアップして
どこかでコメントしてくれるのを期待
0457デフォルトの名無しさん
2007/08/26(日) 21:48:00COMプログラミングが楽になりそう。これは期待
struct M { int a; }
struct S {
M m;
alias m this;
int b;
}
S s;
s.a; // refers to s.m.a
s.b; // refers to s.b
0458デフォルトの名無しさん
2007/08/26(日) 21:51:48なんかリンクできねーよボケって怒られてるんだけど user32.libと一緒に投げてみても怒られるしどうしたものやら
>dmd test.d
C:\dmd\bin\..\..\dm\bin\link.exe test,,,user32.lib+user32+kernel32/noi;
OPTLINK (R) for Win32 Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved
test.obj(test)
Error 42: Symbol Undefined _D5win327winuser13CreateWindowAFPaPakiiiiT5win325win
nt6HANDLET5win325winnt6HANDLET5win325winnt6HANDLEPvZT5win325winnt6HANDLE
--- errorlevel 1
今見てるサイト
ttp://www.kmonos.net/alang/d/windows.html
ttp://web.kyoto-inet.or.jp/people/ysskondo/chap2.html
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_createwindow.asp
使ったWindows.h的なもの ↓の#201
http://www.prowiki.org/wiki4d/wiki.cgi?WindowsAPI
これDスレで聞く内容じゃねーよボケとかだったら誘導してくれるとありがたい
0459デフォルトの名無しさん
2007/08/26(日) 22:10:02Kris Bellの配列スライシングの話(無理やり改変コピペ)
LV0 D言語?どうせC++にもJavaにもなれない半端な言語だろ?どうでもいいよ…
LV1 ふーん…ネイティブバイナリを吐くのか。ってかGCあるから一定のスループットが必要な用途には不適じゃないの?
LV2 malloc/freeの直接呼出しとか…ちょっといいかも…
LV3 やっべnew & deleteオーバーライドまじヤッベ
LV4 やべぇ値型structとかscope属性とかフリーリストもすげぇ使える…返り値配列の手書きcopy-on-writeだけ邪魔だ
LV5 マジこの返り値配列どうにかなんねぇのか?マジウゼェ…
LV6 配列スライシング結婚してくれ!
LV7 やべぇ配列スライシング最高!配列スライシングの参照返しさえあれば生きていける!
LV8 配列スライシングでHTTPサーバ書いた!俺はDでGCほとんどゼロのHTTPサーバ書いたぞ!!
LV9 やっぱDは最高だわ
MAX ウォルターたんとちゅっちゅしたいよぉ〜
0460デフォルトの名無しさん
2007/08/26(日) 23:05:050461デフォルトの名無しさん
2007/08/26(日) 23:27:36CreateWindowAはwinuser.dの中で普通に関数定義されている(ポーティング関数ではない)から、bud(build)などを使って一緒にコンパイルするようにするか、または前もって.libを作っておいてそれをリンクするようにしないと使えない。
急場しのぎとしては、CreateWindowExAの方を使ってみるといい。
CreateWindowExAはポーティング関数だから、ライブラリをビルドしなくても使えるよ。
0462デフォルトの名無しさん
2007/08/26(日) 23:37:47>>457 がすべて
0463デフォルトの名無しさん
2007/08/27(月) 00:38:52これのtrunkを取得するアドレスってどこになるんでしょうか?
ttp://www.dsource.org/projects/bindings/browser/trunk/win32
に接続しようとしても繋がらないのですが
>>458はどうやって#201を入手したのかな
0464デフォルトの名無しさん
2007/08/27(月) 02:08:46のページ下のZip Archive
0465デフォルトの名無しさん
2007/08/27(月) 06:29:48test.dの中でimportしててもダメ?importってCとかでいう#include <XXXX.h>とは違う動作?
とりあえずCreateWindowExAの方使うようにしてみたらコンパイル通ってウィンドウ出せたよ!
>>463
ttp://www.dsource.org/projects/bindings/changeset/201/trunk/win32?old_path=%2F&format=zip
これ
0466デフォルトの名無しさん
2007/08/27(月) 09:53:41について誰か悔しく
0467デフォルトの名無しさん
2007/08/27(月) 10:12:49おちゅ
配列にかたよっている気もするけど、
原文もそうなの?
俺もそんな感じで、いまLV7、9ってきがす
0468デフォルトの名無しさん
2007/08/27(月) 10:18:34名前的に、
import std.metastrings;
static foreach(i; 0..10) {
mixin("int i" ~ ToString!(i) ~ ";");
}
とかできるんでないの?、と思ってスライドみたら、
コンパイラが最適化で勝手にやってくれてもよさそうな例しかのっとらんな。
0469461
2007/08/27(月) 11:54:33>win32.winuser.dのコンパイル後の物体をリンクせよってこと?
基本的にはそういうこと。
例外として、 -inline付きでコンパイルすると、関数がインライン化して消えるからOK、というのがある。
-inline付きでコンパイルすれば、CreateWindowAでもコンパイル通るんじゃないかな。
>importってCとかでいう#include <XXXX.h>とは違う動作?
importはシンボルを読み込むだけだから、Cで言うと、宣言だけが書かれたヘッダファイルをインクルードした状態と同じになる。
対象モジュールに実体があるときは、コンパイルしたものをリンクしないといけない。(基本的には)
0470デフォルトの名無しさん
2007/08/27(月) 18:16:130471デフォルトの名無しさん
2007/08/27(月) 18:45:40>難読
それはヲルタンの意図と反するんだろうねw
0472デフォルトの名無しさん
2007/08/27(月) 19:15:34<⌒/ヽ-、___ macro実装されたら起こしてクリ。
/<_/____/
0473デフォルトの名無しさん
2007/08/27(月) 19:52:56なるほど
ちゅうか公式のimportの説明読んだらシンボルうんぬんってちゃんと書いてあったわ うんこちゃんですまんこ
-inlineつけてやってみたけど相変わらず
Error 42: Symbol Undefined _D5win327winuser13CreateWindowAFPaPakiiiiT5win325win
nt6HANDLET5win325winnt6HANDLET5win325winnt6HANDLEPvZT5win325winnt6HANDLE
--- errorlevel 1
って言われる件 -inlineつけてもシンボルだけimportなら関数の中身とか展開してくれない気がするのは気のせい?
0474デフォルトの名無しさん
2007/08/27(月) 20:37:280475デフォルトの名無しさん
2007/08/27(月) 23:20:36LV5 マジこの返り値配列どうにかなんねぇのか?マジウゼェ…
LV6 配列スライシング結婚してくれ!
え?これ何に気が付いたってことなのかな?
0476デフォルトの名無しさん
2007/08/27(月) 23:59:31偏ってるも何も配列スライシングで無駄なメモリコピーが抑制できるという話
>>475
元ネタはここ
ttp://ex20.2ch.net/test/read.cgi/gline/1175011762/
解説曰く
> レベル5で嫌いな対象を作り、レベル6でなぜかいきなり結婚とか飛躍。
> レベル8まで盛り上げたところでレベル9で本命らしきところに落ち着くというパターン。
> MAXは後から付けられたようだ。
らしい
0477デフォルトの名無しさん
2007/08/28(火) 00:07:03アドレスthx
>>473
bud使いなはれ
0478デフォルトの名無しさん
2007/08/28(火) 00:08:22元ネタは知ってるんだけど
配列スライシングと返値配列がどう関係あるのかわからなくて
0479461
2007/08/28(火) 00:21:58>-inlineつけてやってみたけど相変わらず
確かに-inlineだけだとだめだった。
手元で試してみたら、-releaseと-inlineがあって-gが無い場合にインライン展開してた。
中途半端なこと言ってすまん。
0480デフォルトの名無しさん
2007/08/28(火) 00:22:17dsss使ってみたら世の中のすごさに感動した
budのがいいの?
0481デフォルトの名無しさん
2007/08/28(火) 00:26:03俺はbud派だけどDSSSでもいいよ
DSSSでうまくライブラリをインストールできないことが多かったから
使い慣れたbudでいいやと思ってそのままなだけだから
0482デフォルトの名無しさん
2007/08/28(火) 00:30:28ほんとだ、-release -inlineで通ったわ なんで通るんだろ なんかキモい気がする
>>481
把握 dsssで難儀したらそっち使ってみるよ
0483デフォルトの名無しさん
2007/08/28(火) 00:56:420484デフォルトの名無しさん
2007/08/28(火) 02:19:380485デフォルトの名無しさん
2007/08/28(火) 16:46:10bud更新止まってるし移った方がいいかなと思ってるんだが。
budのbuild.brfとかbuild.cfgみたいに外部ファイル参照できるんだよね?
0486デフォルトの名無しさん
2007/08/29(水) 03:08:540487デフォルトの名無しさん
2007/08/29(水) 03:11:47いまどき長い式の中でインクリメントの結果を使うの流行らんし。
0488デフォルトの名無しさん
2007/08/29(水) 06:25:58くらいでしかつかわん
0489デフォルトの名無しさん
2007/08/29(水) 06:31:000490489
2007/08/29(水) 06:32:120491デフォルトの名無しさん
2007/08/29(水) 11:18:030492デフォルトの名無しさん
2007/08/29(水) 13:24:540493デフォルトの名無しさん
2007/08/29(水) 19:49:28まぁなんかあったんじゃね?
0494デフォルトの名無しさん
2007/08/29(水) 20:26:28http://d.puremagic.com/issues/show_bug.cgi?id=1448
0495デフォルトの名無しさん
2007/08/29(水) 20:41:530496デフォルトの名無しさん
2007/08/29(水) 23:49:31デフォルトのフォルダを指定する方法ってない?
C_INCLUDE_PATHみたいなやつ。
いちいち-Iで指定しないとダメかな?
0497デフォルトの名無しさん
2007/08/30(木) 01:33:400499デフォルトの名無しさん
2007/08/30(木) 15:55:580500デフォルトの名無しさん
2007/08/30(木) 16:08:430501デフォルトの名無しさん
2007/08/30(木) 18:58:340502デフォルトの名無しさん
2007/08/30(木) 18:59:160503デフォルトの名無しさん
2007/08/30(木) 19:05:240504デフォルトの名無しさん
2007/08/30(木) 19:06:260505デフォルトの名無しさん
2007/08/30(木) 19:33:080506デフォルトの名無しさん
2007/08/30(木) 19:57:47TangoのVer.1.0もリリース近いんだっけ?
0507デフォルトの名無しさん
2007/08/30(木) 20:20:39今は特に不自由してないんだが
0508デフォルトの名無しさん
2007/08/30(木) 20:25:44Phobosは放置状態なのでバグもずっと残ったままになってる
スレッド関係とかはまったく使い物にならない感じ
0509デフォルトの名無しさん
2007/08/30(木) 20:43:18Phobosってメンテナみたいなのいないの?
あとTangoってPhobos乗っ取る!みたいなこと言ってるけど公式に置き換えられることってあるのかな?
0510デフォルトの名無しさん
2007/08/30(木) 20:59:05標準ライブラリに採用されるなら安心して使いまくれるんだけど
0511デフォルトの名無しさん
2007/08/30(木) 22:55:450512デフォルトの名無しさん
2007/08/31(金) 00:11:530513デフォルトの名無しさん
2007/08/31(金) 00:14:25スマンまぎわらしかった Tango1.0とTango2.0のこと
0514デフォルトの名無しさん
2007/08/31(金) 03:17:12コンストラクタ内で delete this; をすると、何か問題はありますか?
コンストラクタ内で初期化に失敗したときに、例外を発生させて、
this()
{
scope(failure) delete this;
A = new Class_A();
B = new Class_B();
C = new Class_C(); //C.this()で例外発生。
}
~this()
{
delete A; //delete.
delete B; //delete.
delete C; //C is null.
}
のようにして、例外が発生する前に生成したクラスオブジェクトを
deleteしたいのですが、どうでしょうか?
0515デフォルトの名無しさん
2007/08/31(金) 06:20:140516デフォルトの名無しさん
2007/08/31(金) 16:04:48{
A = new Class_A();
scope(failure) delete A;
B = new Class_B();
scope(failure) delete B;
C = new Class_C();
scope(failure) delete C;
...
}
0517デフォルトの名無しさん
2007/08/31(金) 21:18:50Dはデストラクタ内でdeleteって推奨されてないみたい
ttp://www.kmonos.net/alang/d/class.html#destructors
0518514
2007/09/01(土) 00:45:14>>516
そういう様にしたほうがいいですかね。
delete this を使うと、メンバオブジェクトへの delete は、
デストラクタに1度書けば済むので、楽かなと思いました。
>>517
この辺はあまりしっかり読んでいませんでした。
GCがデストラクタを呼び出すときのことですね?
明示的にdeleteを実行することを鉄則とすれば、
大丈夫そうな気もしますが少し悩みますね。
0519デフォルトの名無しさん
2007/09/01(土) 00:59:070520デフォルトの名無しさん
2007/09/02(日) 03:18:490521デフォルトの名無しさん
2007/09/02(日) 05:21:480522デフォルトの名無しさん
2007/09/02(日) 12:04:420523デフォルトの名無しさん
2007/09/02(日) 12:19:400524デフォルトの名無しさん
2007/09/02(日) 12:35:240525デフォルトの名無しさん
2007/09/02(日) 12:46:530526デフォルトの名無しさん
2007/09/02(日) 13:03:430.24あるがな。
0527デフォルトの名無しさん
2007/09/02(日) 13:09:43http://sourceforge.net/projects/dgcc/
ここかー
http://gdcgnu.sourceforge.net/
ずっとここ見てたわ
0528デフォルトの名無しさん
2007/09/02(日) 13:30:33D News Groups(news.digitalmars.com)のD.announceかD.gnuを見てればおk
0529デフォルトの名無しさん
2007/09/02(日) 14:00:15下はテストに使ったソースね
extern (Windows) int MessageBoxA(void*, char*, char*, int);
class A
{
~this ()
{
// Tango の phobos.lib だと呼び出されない...
MessageBoxA(null, "destruct!", "Message", 0);
}
}
extern (C) int printf(char*, ...);
void main()
{
auto o = new A;
printf("object: %p\n", o);
}
0530デフォルトの名無しさん
2007/09/02(日) 14:06:03http://www.digitalmars.com/d/class.html#Destructor
> The garbage collector is not guaranteed to run the destructor for all unreferenced objects.
0531デフォルトの名無しさん
2007/09/02(日) 14:12:050532デフォルトの名無しさん
2007/09/02(日) 14:47:500533デフォルトの名無しさん
2007/09/02(日) 14:49:45保証はないのか……
「デストラクタでリソースのハンドルを閉じる」とか、そのままじゃ出来ないな
>>531 みたいな感じでやってみます
情報に感謝
0534デフォルトの名無しさん
2007/09/02(日) 15:11:04プロセスが終了すればそのプロセスが取得した記憶域はOSに返却されるわけで、
わざわざプログラムの終了時にガベッジコレクタがメモリを整理する必要はない。
0535デフォルトの名無しさん
2007/09/02(日) 16:46:56RAIIの強制はこうするのがD言語流かと
scope class A {}
scope a = new A; // OK
auto a = new A; // NG
0536デフォルトの名無しさん
2007/09/02(日) 16:52:13class CLS{
private bool finalized=false;
void somethingToDo(){/* ... */}
void finalize(){ finalized = true; }
~this(){ assert(finalized == true); }
}
int main(){
auto x = new CLS;
x.somethingToDo();
x.finalize();
}
0537デフォルトの名無しさん
2007/09/02(日) 17:30:39scope class A {
this(){ writefln("A.ctor"); }
~this(){ writefln("A.dtor"); }
}
void main() {
scope a = new A;
a = null;
}
0538デフォルトの名無しさん
2007/09/02(日) 17:41:50それ、バグじゃね?
…いや、バグじゃないのか…?
というか、それが落とし穴になるならデストラクタっていらなくね?
0539デフォルトの名無しさん
2007/09/02(日) 17:44:590540デフォルトの名無しさん
2007/09/02(日) 17:45:26> Assignment to a scope, other than initialization, is not allowed.
って書いてあるから、バグだな。
0541デフォルトの名無しさん
2007/09/02(日) 17:45:390542デフォルトの名無しさん
2007/09/02(日) 21:53:100543デフォルトの名無しさん
2007/09/02(日) 22:14:120544デフォルトの名無しさん
2007/09/02(日) 22:18:49Xercesって「ざーさす」じゃなくて「くせるせす」らしいですよ奥さん
0545デフォルトの名無しさん
2007/09/03(月) 01:44:49とかどうよ
0546デフォルトの名無しさん
2007/09/03(月) 02:31:46finalは関係ないんじゃないかな
変数aの方ではなくて
オブジェクトそのものの方にscope性があるべきだと思う
0547デフォルトの名無しさん
2007/09/03(月) 04:44:30Mango に SAX なパーザがあるぞ
0548デフォルトの名無しさん
2007/09/03(月) 06:17:590549デフォルトの名無しさん
2007/09/03(月) 08:31:46tinyxml
0550デフォルトの名無しさん
2007/09/03(月) 14:25:23俺はexpat
0551デフォルトの名無しさん
2007/09/04(火) 17:51:440552デフォルトの名無しさん
2007/09/04(火) 18:59:220553デフォルトの名無しさん
2007/09/04(火) 21:10:17後で試す
0554デフォルトの名無しさん
2007/09/04(火) 21:24:33import smjg.libs.util.all;
void main(){
cOut.writefln("こんにちは世界");
}
しかも cOut の関数インタフェースはこんな感じ(なんかおかしいのあるけど)
ttp://pr.stewartsplace.org.uk/d/sutil/ref/classsmjg_1_1libs_1_1util_1_1console_1_1ConsoleOutput.html
void write (dchar c)
void write (string c)
void writeLine (string c)
void write (string str)
void writeLine (string str)
void writef (...)
void writefln (...)
void writefx (TypeInfo[] arguments, void *argptr, bool newline=false)
void flush ()
0555デフォルトの名無しさん
2007/09/04(火) 21:42:10void main(){
while (!cIn.eof()){
string line = cIn.readLine();
cOut.writefln("「", line, "」");
}
}
パイプを使うとエラー
dir | main.exe
リダイレクトならおk
dir > out.txt
a < out.txt
0556デフォルトの名無しさん
2007/09/04(火) 21:42:43main.exe < out.txt
0557デフォルトの名無しさん
2007/09/05(水) 07:00:140558デフォルトの名無しさん
2007/09/06(木) 04:01:35…ん?
Aug 26, 2007?
0559デフォルトの名無しさん
2007/09/06(木) 04:27:41正直やっとという感じがしないでもないけど。
UTF-8関連のが入ってるのでWindowsな人感想よろ。
std.hiddenfuncはドキュメント無いけどバックエンドの変更っぽいのでユーザーは気にする必要なさそう。
0560デフォルトの名無しさん
2007/09/06(木) 04:42:55自己レス
日付修正された
0561デフォルトの名無しさん
2007/09/06(木) 05:00:420562デフォルトの名無しさん
2007/09/06(木) 05:50:45に触れるの忘れてた
0563デフォルトの名無しさん
2007/09/06(木) 10:40:190564デフォルトの名無しさん
2007/09/06(木) 11:01:000565デフォルトの名無しさん
2007/09/06(木) 11:20:56Sep 5, 2007
New/Changed Features
Added command line switches -defaultlib and -debuglib
Bugzilla 1445: Add default library options to sc.ini / dmd.conf
Changed result type of IsExpression from int to bool.
Added isSame and compiles to __traits.
Added optional TemplateParameterList to IsExpression.
Added warning when override is omitted.
Added std.hiddenfunc.
Added trace_term() to object.d to fix Bugzilla 971: No profiling output is generated if the application terminates with exit
Multiple module static constructors/destructors allowed.
とりあえずはっとくね
0566デフォルトの名無しさん
2007/09/06(木) 13:27:43-__EOF__
-q{test}やq"!test!"など
-ClassInfoのgetMembersはまだ実装完了してないっぽい。
0567デフォルトの名無しさん
2007/09/06(木) 14:41:10の
win32/winnt.d(1454): const LUID SYSTEM_LUID = { QuadPart:999 };
がdmd2.004でコンパイルエラー
コンパイラのバグかな
>>564
thx
>>566
macroが来てしまうのか
難読コードユーザ狂喜乱舞
0568デフォルトの名無しさん
2007/09/06(木) 14:54:180569デフォルトの名無しさん
2007/09/06(木) 14:57:54macroはまだ来ないとおも。
リフレクションが先っぽ。
0570デフォルトの名無しさん
2007/09/06(木) 16:40:41q{test} って不要なような気がするなあ、
というか、この構文は将来の言語拡張の可能性を大きく減じるんじゃないだろうか。
個人的には構造体・クラスリテラルに使ってほしかったんだけど。
0571デフォルトの名無しさん
2007/09/06(木) 17:04:28rubyのようなイテレータを実装して且つpythonのように式で使えるようにしない限りは構文的問題は無いと思う。
でも別の理由からq{test}じゃなくてtoken("test")かもしくはtoken型として欲しいなぁ。
Delimited StringsとToken Stringsの両方が「q」では紛らわしいし、リテラルだとtoken(foo)とできないし。
0572デフォルトの名無しさん
2007/09/06(木) 20:38:38>getMembers
うっひょー、そんなのくるんだ
0573デフォルトの名無しさん
2007/09/07(金) 02:32:24これって、Tangoとか使いやすくするように―とかの思惑があったりするのかな。
0574デフォルトの名無しさん
2007/09/07(金) 03:53:57リフレクションかなとおもた
例えばflectionedでスタックトレースを表示させようとしたら
-g付きでコンパイルしたphobos.libが必要だし
0575デフォルトの名無しさん
2007/09/07(金) 07:20:380576デフォルトの名無しさん
2007/09/07(金) 07:22:16以降何があっても読みません
___EOF___
0577デフォルトの名無しさん
2007/09/07(金) 07:40:55__EOF__の意味自体はほかの言語から予想ついてたけど、それ自体に使いどころって思い浮かばない
0578デフォルトの名無しさん
2007/09/07(金) 09:45:040579デフォルトの名無しさん
2007/09/07(金) 11:01:33......どう考えても役に立ちそうにないか。
0580デフォルトの名無しさん
2007/09/07(金) 13:01:26某h.Sさんのとこから字句解析パクって来てDの色付けエディタもどきつくってるんだけど、
「コメント」と「ネスト可能なコメント」と「文字列」と「WISIWYG文字列」の正規表現がよくわからないんだ。
暇だったら教えてください。お願いします。
言語はJSです。
0581デフォルトの名無しさん
2007/09/07(金) 13:19:01なんて事にならないといいな
0582デフォルトの名無しさん
2007/09/07(金) 13:22:510583デフォルトの名無しさん
2007/09/07(金) 17:16:34そもそも正規表現ってネストを表現できたっけ?
0584デフォルトの名無しさん
2007/09/07(金) 17:24:10perlの拡張文法とか使わんとミリ
0585デフォルトの名無しさん
2007/09/07(金) 19:48:27あんまりスマートじゃないけど、コメントのネストなら
実用上はそれで十分じゃね?
0586デフォルトの名無しさん
2007/09/07(金) 20:11:470587デフォルトの名無しさん
2007/09/07(金) 20:26:080588デフォルトの名無しさん
2007/09/07(金) 20:39:440589デフォルトの名無しさん
2007/09/07(金) 20:45:14Wiki4Dのwindows.hPort#201使ってるんだけどウィンドウ表示するだけのプログラムコンパイルすよーとすると怒られる
Error: 'QuadPart' is not a member of 'const LARGE_INTEGER'
意味ワカンネ
0590デフォルトの名無しさん
2007/09/07(金) 20:50:170591デフォルトの名無しさん
2007/09/07(金) 20:52:40import(__FILE__)で使うデータに決まってるだろ・・・
0592デフォルトの名無しさん
2007/09/07(金) 20:56:10なんということであろうか
余は大変恐縮している
2.003に戻しとくか…
0594デフォルトの名無しさん
2007/09/07(金) 22:01:17ソース綺麗に書くのめんどくさくなってきた
0595デフォルトの名無しさん
2007/09/07(金) 22:10:130596デフォルトの名無しさん
2007/09/07(金) 22:10:380597デフォルトの名無しさん
2007/09/07(金) 22:42:250598デフォルトの名無しさん
2007/09/07(金) 23:04:330599デフォルトの名無しさん
2007/09/08(土) 08:37:47String Literalsが滅茶苦茶増えてるな
0600デフォルトの名無しさん
2007/09/08(土) 09:15:03This
is a multi-line
heredoc string
EOS"
);
( ^ω^)・・・
0601デフォルトの名無しさん
2007/09/08(土) 09:43:56DSciTEは?
0602デフォルトの名無しさん
2007/09/08(土) 09:54:530603デフォルトの名無しさん
2007/09/08(土) 10:33:44なんで `` があるのに q"" まで作るんだろ
なんか文字列リテラル周りの意図がわからん
0604デフォルトの名無しさん
2007/09/08(土) 12:19:47使ってみた
とりあえずProgram Files以下につっこんだらマジメに働いてくれなかった
あとソース整形機能ついてる?
>>602
できんの?
今Descent 0.3.20070507入ってるけどやり方わかんねー
これはもう丁寧に気をつけて書きなさいということか
0605デフォルトの名無しさん
2007/09/08(土) 19:12:40DSciTEはちょこちょこやらないと動かない。インストール方法のVideo Flushあるから参考にしてみてくださいや
ttp://d.whosme.de/view_movie.php?movie=tutorials/4_DScite/4_DScite_en.swf&language=en
ソース整形機能って class Hoge { って打って [Enter] を押したら自動的にインデントされる。とかならついてるよ。え?ちがう?
0606デフォルトの名無しさん
2007/09/08(土) 19:16:250607デフォルトの名無しさん
2007/09/08(土) 19:43:35俺さ三流以下だけどさ、発狂しそうだよ。
以下のものを自分用に作ってたけど、疲れたから打ち切り。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4904.zip
#HTAだけどWshはまだ使ってない。HTMLとしても動くよ。結構重いよ。ちょっとバグってるよ。
0608デフォルトの名無しさん
2007/09/08(土) 19:48:44C++とかはひどいってことかな
0609デフォルトの名無しさん
2007/09/08(土) 19:57:45例えばインデントゼロのウンコソース全体をぴゃっ!って直してくれるみたいなものを想像している俺です
0610デフォルトの名無しさん
2007/09/08(土) 21:14:03DはC++と違って文脈自由文法だから、圧倒的に簡単なはず。
0611デフォルトの名無しさん
2007/09/08(土) 21:50:430612デフォルトの名無しさん
2007/09/09(日) 00:48:050613デフォルトの名無しさん
2007/09/10(月) 02:13:43ソースを「D Editor」で開いてから、「Ctrl+Shift+F」で整形されますよ。
Javaのフォーマッターと同じ使い方です。
バージョン0.4.3.20070907で確認しました。
↑落ち着いて書いた。
0614デフォルトの名無しさん
2007/09/10(月) 05:42:080615デフォルトの名無しさん
2007/09/11(火) 09:49:08仕様でDのコミュニティの中でローカルな存在になってるにはもったいないくらいの出来じゃないか。
0616デフォルトの名無しさん
2007/09/11(火) 14:29:400617デフォルトの名無しさん
2007/09/11(火) 22:15:57squirrelとの違いが全然わからないんだけど・・・
ぱくってる?
0618617
2007/09/11(火) 22:23:56中身は全部Dで書いてあったよ・・・
SquirrelをD言語に移植したって感じ
Squirrelをいじってた俺にしてみりゃ、
こりゃすげーおもしろそうです。
0619デフォルトの名無しさん
2007/09/12(水) 01:58:290620デフォルトの名無しさん
2007/09/12(水) 02:36:090621デフォルトの名無しさん
2007/09/12(水) 03:12:41というか、標準にならなくてもいいからPhobosと共存できさえすればいいのに…
0622デフォルトの名無しさん
2007/09/12(水) 06:23:26あとでよんでみよー
0623デフォルトの名無しさん
2007/09/12(水) 14:10:58C++でなければならない理由があって泣けてくる
0624デフォルトの名無しさん
2007/09/12(水) 16:07:500625デフォルトの名無しさん
2007/09/12(水) 18:13:52Squirrelを使えればまた便利なんだろうけど……MiniDに期待
0626デフォルトの名無しさん
2007/09/12(水) 19:00:480627デフォルトの名無しさん
2007/09/12(水) 19:01:09ttp://blogs.sun.com/geertjan/entry/interview_author_of_d_programming
0628デフォルトの名無しさん
2007/09/12(水) 19:57:28dx9/dx10のSDKライブラリにリンクできましたっけ?
htodも使い方に慣れてないので勉強したいと思います。
いずれにしても、素人向けのライブラリで、OpenGL/MacOSXでも使われたり、
IDEを使わせるのが前提だったり、言語使用に変わられたりすると困ったりするので、
まだ移行できずにいる状態です。
0629デフォルトの名無しさん
2007/09/12(水) 20:33:28>dx9/dx10のSDKライブラリにリンクできましたっけ?
本格的にやろうとするとポーティング作業がめんどいことになるけど、
基本的には難しいことは無いよ。
interface IDirect3DTexture9: IDirect3DBaseTexture9{
HRESULT GetLevelDesc(UINT Level, D3DSURFACE_DESC *pDesc);
HRESULT GetSurfaceLevel(UINT Level, IDirect3DSurface9* ppSurfaceLevel);
HRESULT LockRect(UINT Level, D3DLOCKED_RECT* pLockedRect, RECT* pRect, DWORD Flags);
HRESULT UnlockRect(UINT Level);
HRESULT AddDirtyRect(RECT* pDirtyRect);
}
とか宣言しておけばCOMオブジェクト使えるし。
0630デフォルトの名無しさん
2007/09/12(水) 22:13:37PlatformSDKとMicrosoft DirectX SDK (August 2007)入れてWiki4DのWindows.hPortいれてDirectX勉強してるけど一応できるっぽいよ
今までGUIプログラミングなんかしたことねーから俺はまだ三角形描けるくらいしかできてないけど
0631デフォルトの名無しさん
2007/09/13(木) 01:01:52だれかつくんねーかな。
0632デフォルトの名無しさん
2007/09/13(木) 01:13:490633デフォルトの名無しさん
2007/09/13(木) 07:38:550634デフォルトの名無しさん
2007/09/13(木) 09:32:220635デフォルトの名無しさん
2007/09/13(木) 11:40:540636デフォルトの名無しさん
2007/09/13(木) 12:27:460637デフォルトの名無しさん
2007/09/13(木) 15:57:19static if (A.length != 0)
const TupleToArray = TupleToArray!(T, ret ~ A[0], A[1..$]);
else
const TupleToArray = ret;
}
import std.stdio;
void main() {
writefln(TupleToArray!(string, [], "hoge", "hage", "hige"));
}
こんなソースで
hoge.d(1): Error: arithmetic/string type expected for value-parameter, not T[]
こういうエラー出るんですけど、これどこかでおかしいことしてますか?
皆目見当つきません><
0638デフォルトの名無しさん
2007/09/13(木) 17:44:35文字列以外の配列は値パラメタとして使えない。
既にタプルがあるなら、[]で囲うだけで配列になるよ。
template Tuple(T...){ alias T Tuple; }
void main() {
writefln([Tuple!("hoge", "hage", "hige")]);
}
0639デフォルトの名無しさん
2007/09/13(木) 20:42:08いや、俺が書いたんじゃないソースをインポートしたらぶわーって出たんですよ。
俺はちゃんと宣言するようにしてますよ、勘弁してくださいよ。
0640デフォルトの名無しさん
2007/09/13(木) 21:58:55はー、そうだったんだ・・・
char配列がいいなら他のもなんでもいいのかと思ってた・・・
>既にタプルがあるなら、[]で囲うだけで配列になるよ。
ほーほー、これは便利ww
代用できるようなのでそっちにしますね
回答トンクス!
0641デフォルトの名無しさん
2007/09/14(金) 00:07:450642デフォルトの名無しさん
2007/09/14(金) 06:13:000643デフォルトの名無しさん
2007/09/14(金) 07:11:350644デフォルトの名無しさん
2007/09/14(金) 17:20:01switch(i) {
case 20..100: writefln("20 <= i < 100");
}
ついでに不等号も使えるようにしちくり。
switch(i) {
case is > 100: writefln("i is greater than 100");
}
0645デフォルトの名無しさん
2007/09/14(金) 18:48:03ifでよくね?
0646デフォルトの名無しさん
2007/09/14(金) 21:07:33writefln("20 <= i < 100");
0647デフォルトの名無しさん
2007/09/14(金) 21:11:12case 1,3..6,7: writefln("i is 1, 3, 4, 5, or 7"); break;
}
終端が含まれないのがやはり気持ち悪いな。
0648デフォルトの名無しさん
2007/09/14(金) 22:21:24array[0..length-1];
ってやる方が気持ち悪い。
0649デフォルトの名無しさん
2007/09/14(金) 22:39:48rubyみたいに..と...に分けてもいい気がするけどって既出ですねー
0650デフォルトの名無しさん
2007/09/15(土) 20:40:010651デフォルトの名無しさん
2007/09/15(土) 20:49:23All-in-Oneインストーラみたいなのがあれば普及するかも。
テンプレートメソッドパターンで、
後はゲームループの中を書くだけみたいな感じで。
0652デフォルトの名無しさん
2007/09/15(土) 22:16:09じゃあ俺が気長に開発してみるわ
miniDとの連携が取れるといろいろよさそうだな
0653デフォルトの名無しさん
2007/09/16(日) 00:11:35(とか言うけどもしかし>>652にはwktkが止まらない)
HSPあたり使うような層にはインストールは環境変数設定してインクルードパスもiniファイル編集して……っていうのはちょっと敷居高いかもしれないよね。
しかもデフォだと日本語通らないから文字コード周りの知識必須だし。使用するための敷居を下げるのは結構いいんじゃないかと思った。
そろそろC/C++/Javaあたりの経験を前提にしない入門記事があってもいいのかもしれないとも思うんだけども他言語未経験者がDに魅力を感じるのか? っていうのがちょっと微妙かなあ。
0654デフォルトの名無しさん
2007/09/16(日) 00:13:190655デフォルトの名無しさん
2007/09/16(日) 00:45:01たぶん売り込み方次第。優れたものが選ばれる世の中じゃないのは市場見てても明らかでは?
0656デフォルトの名無しさん
2007/09/16(日) 00:48:41>>653 まだ仕様も固まってない現状だとちょっと書きにくいんじゃなかなぁ・・・・
0657デフォルトの名無しさん
2007/09/16(日) 07:11:480658デフォルトの名無しさん
2007/09/16(日) 08:05:12いや保証はないが。
0659デフォルトの名無しさん
2007/09/16(日) 08:12:10wktkが止まらない!!
>>653
Dに限らずどんな言語やろうともCの経験は必要な気がする
ちなみに俺はC++やろうとしてめんどくさくなってDやり始めた
0660デフォルトの名無しさん
2007/09/16(日) 08:40:45応援する。ある程度計画が固まったらスピンオフして別スレに誘導して欲しい。
> miniDとの連携が取れるといろいろよさそうだな
ユーザ視点だと資料の豊富さという観点でメジャーなスクリプトのが嬉しいんじゃない?
ECMAScript系かRubyか、ゲーム組み込みとしては有名なLuaあたり。
HSP並みの手軽さが手に入れば、同人ゲーム業界の新しい光になるな。
0661628=652
2007/09/16(日) 10:18:441ヶ月間の勉強でアナログ三軸加速度計のデータから画像をリアルタイム制御する、
という無茶なライブラリを作るのを生業にしているので、
ド素人がキー入力を受け付けて画と音を出すというのはちょうどはまるもので。
現在はC++で書いているのですが、
「われわれのお客様はfor文のネストで挫折する人です」という状態なので、
配列が自身の大きさを知っていて気軽に関数に投げ入れられるとか、
関数の第一引数が配列だった場合、 その関数はあたかも配列のプロパティであるかのように呼び出せる機能とか、
そういうのが超重要なんで、願わくはDに行きたいんですよね。
半分税金を投入してもらってるのでこのくらいの還元はね、と。
0662デフォルトの名無しさん
2007/09/16(日) 10:32:31Lua, Squirrel, MiniDのいずれでもハッシュテーブルがTableという名前なのが邪魔、といってみる。
0663デフォルトの名無しさん
2007/09/16(日) 10:33:12そいつはいろいろと大変だね
超ガンガレ
0664デフォルトの名無しさん
2007/09/16(日) 10:52:31音楽クリップ(SE音のメモリキャッシュ、パン、ボリューム調整に対応)
後は入力インタフェース抽象化と、フルスクリーン対応
ここら辺を押えたらHSPだけじゃなくFlashユーザも食指を伸ばすだろうね。
0665デフォルトの名無しさん
2007/09/16(日) 12:45:440666デフォルトの名無しさん
2007/09/16(日) 16:15:45|
|
|
| /  ̄  ̄ \
(=) /、 ヽ
J >>664 |・ |―-、 |
q -´ 二 ヽ |
ノ_ ー | |
\. ̄` | /
O===== |
/ |
/ / |
0667デフォルトの名無しさん
2007/09/16(日) 16:16:420668デフォルトの名無しさん
2007/09/16(日) 20:46:000669デフォルトの名無しさん
2007/09/17(月) 07:22:42DはDで超絶気持ち悪い方向に進化してはいるけれど。
とりあえずC#3.0の拡張メソッドとかすぐにでも取り込んでほしいな。
0670デフォルトの名無しさん
2007/09/17(月) 08:39:35かと言って HSP じゃ遅いし…
って思う俺は超期待してしまう
0671デフォルトの名無しさん
2007/09/17(月) 11:00:520672デフォルトの名無しさん
2007/09/17(月) 12:33:45C#ですらあるのに
デリゲートがクロージャじゃないのは中途半端すぎ
0673デフォルトの名無しさん
2007/09/17(月) 13:27:56違うんだ…
0674デフォルトの名無しさん
2007/09/17(月) 13:37:49素のデリゲートだと、外側の変数にアクセスできる、無名関数ってくらいだけど、
クロージャって、スコープから外れても、外の変数にアクセスできたりするじゃなかったけ?
Lisp由来だったと思うけど、
識者の方kwsk
0675デフォルトの名無しさん
2007/09/17(月) 15:22:10たぶん一般的にいうクロージャが実装されてると、
int delegate(int) func(int x)
{
int dg(int y)
{
return x + y;
};
return &dg;
}
void main()
{
auto plusFive = func(5);
stdout.println(plusFive(10));
}
こんなようなコードで15が出力されてくれるんだと思う。
実際今のDだとfuncの引数xがスコープ外れた時点で破棄されてるのでよくわからん値+10=よくわからん値が出力されちゃう。
0676デフォルトの名無しさん
2007/09/17(月) 15:36:30波括弧が狙ったように一行おきに出てきて謎々みたいになってるな、ごめん。
0677デフォルトの名無しさん
2007/09/17(月) 15:38:52int delegate(int) func(int x)
{
int dg(int y)
{
return x + y;
};
return &dg;
}
void main()
{
auto plusFive = func(5);
stdout.println(plusFive(10));
}
つまり、クロージャ生成した中のものを外に持ち出しても、問題なく使えるということか?
0678デフォルトの名無しさん
2007/09/17(月) 16:11:30new delegate(args) { statement; } みたいな感じで出来ないかなあ
0679672
2007/09/17(月) 16:30:16>つまり、クロージャ生成した中のものを外に持ち出しても、問題なく使えるということか?
それに加えて、「ループの中でクロージャ生成したらそのときのローカル変数の値を保持する」
という特徴もある。
0680672
2007/09/17(月) 16:32:52スレッドごとにデータを保持させたいと思ったら、クロージャじゃないから
いちいちクラス作らないといけなくなって、なんか中途半端だなと。
0681デフォルトの名無しさん
2007/09/17(月) 16:45:490682デフォルトの名無しさん
2007/09/17(月) 18:06:290683デフォルトの名無しさん
2007/09/17(月) 18:07:07o ネイティブコンパイラの言語で、
0684デフォルトの名無しさん
2007/09/17(月) 18:09:130685デフォルトの名無しさん
2007/09/17(月) 18:42:410686デフォルトの名無しさん
2007/09/17(月) 19:30:380687デフォルトの名無しさん
2007/09/17(月) 19:34:370688デフォルトの名無しさん
2007/09/17(月) 20:07:220689デフォルトの名無しさん
2007/09/17(月) 20:11:130690デフォルトの名無しさん
2007/09/17(月) 20:16:360691デフォルトの名無しさん
2007/09/17(月) 22:17:560692デフォルトの名無しさん
2007/09/17(月) 22:58:58いやいや、カラクリはもっと単純だよ。つまり、
(1)関数型言語は大抵クロージャ持ってる
(2)多くがネイティブコンパイルできる
(3)でもユーザー人口少ない世界だから、有名なのから普通に述べていっても瞬く間にマイナー言語の出番が来る
0693デフォルトの名無しさん
2007/09/17(月) 23:21:10>ループの中でクロージャ生成したらそのときのローカル変数の値を保持する
Javascriptのアレはクロージャじゃなかったのか!!
いや、よくわからんけど。
とりあえずデリゲートと関数ポインタってのが両方あるんだから無名関数作れるようにして、
どっちかをクロージャ、どっちかを現在のデリゲートって風にすればいいとおもうんだ。
そうしたら実行効率はなんとかなる?
0694デフォルトの名無しさん
2007/09/17(月) 23:28:050695デフォルトの名無しさん
2007/09/17(月) 23:28:270696デフォルトの名無しさん
2007/09/18(火) 00:09:090697デフォルトの名無しさん
2007/09/18(火) 01:09:590698デフォルトの名無しさん
2007/09/18(火) 01:11:14loop { } みたいな。
0699デフォルトの名無しさん
2007/09/18(火) 01:28:260700デフォルトの名無しさん
2007/09/18(火) 01:45:48while(1) でも while(4.7i) でも問題のないところが気持ち悪い。
> for(;;)
空文っぽいのが真として扱われるのが気持ち悪い。
0701デフォルトの名無しさん
2007/09/18(火) 01:48:160702デフォルトの名無しさん
2007/09/18(火) 01:54:230703デフォルトの名無しさん
2007/09/18(火) 02:59:13try(100){
// 100回例外を投げるまで繰り返される
anythingToDo();
}while(Exception ex){
// 99回目の例外発生までここ
Sleep(10);
}catch(Exception ex){
// 100回目の例外発生はここ
writefln(ex.toString());
}
// 例外を投げなければスルー
0704デフォルトの名無しさん
2007/09/18(火) 03:11:25for({ writefln("a"); } false; ) { }
0705デフォルトの名無しさん
2007/09/18(火) 07:01:35hoge() if (fuga == "hage");
とかもほしいな
0706デフォルトの名無しさん
2007/09/18(火) 11:48:45でよくね
0707デフォルトの名無しさん
2007/09/18(火) 12:56:13for({for(;;){}} false; ) {}
ほんとだ怖えぇ
for({int i=0;char c='a';} i<100; ++i) { ... }
たまに違う型の変数を2個宣言したくなることがあるので便利かなとは思った。
0708デフォルトの名無しさん
2007/09/18(火) 17:43:03うわ、始めて知った。これは凄い。
それとInitializeが; | NoScopeNonEmptyStatementになってるのが気になった。なんでNoScopeStatementじゃないんだろうか。
>>707
for(for(;;){} false; ) {} とも可能。
for(pragma(msg,"test");false;){}とかfor(mixin("int i;");i<10;i++){}とかが使えそう?
0709デフォルトの名無しさん
2007/09/18(火) 17:48:03内部エラーなった
0710デフォルトの名無しさん
2007/09/18(火) 18:33:46ちゃんとスコープが昇格するんだな
0711デフォルトの名無しさん
2007/09/18(火) 18:54:39後置記法って、ifの後に、Dだと単文おいても成り立つから、
(カッコや、endなどを強制されないから)意味なくないすか?
0712デフォルトの名無しさん
2007/09/18(火) 19:05:290713デフォルトの名無しさん
2007/09/18(火) 19:42:220714デフォルトの名無しさん
2007/09/19(水) 13:01:05が
unless (key in aa) hoge();
ってかけたらうれしい。つーか連想配列にhasプロパティ追加してくれ
0715デフォルトの名無しさん
2007/09/19(水) 13:01:54でもまあいいか
0716デフォルトの名無しさん
2007/09/19(水) 13:08:49まったく同意
0717デフォルトの名無しさん
2007/09/19(水) 19:25:52むしろ!inが欲しい。
0719デフォルトの名無しさん
2007/09/19(水) 20:10:46チャット入力部分のためにIMEのAPIなどを叩きたいです。
(文字入力+変換 を ゲーム画面上で行いたい)
D言語のライブラリで必要な機能をサポートしているものは既にありますか?
また、チャット入力を可能にした場合、Windowsでしか動かないソースになってしまいますか?
そうであれば、違う環境にしようかな、と思っています。
0720デフォルトの名無しさん
2007/09/19(水) 20:48:570721デフォルトの名無しさん
2007/09/19(水) 20:51:390722デフォルトの名無しさん
2007/09/19(水) 20:52:45DirectX使ったらMacに移植するのは大手術ですが、OpenGLだったらそうじゃないでしょ
IMEの制御はどのくらいOSに依存するのでしょう
0723デフォルトの名無しさん
2007/09/19(水) 20:54:43>>721
フルスクリーンで動作させようと思うので、
ゲーム画面とは別の サブウィンドウ上でOSのGUI部品のエディットボックスを張る、
という実装にはしたくないです。
そうすると、変換するためには叩かないと無理だとおもうんです。
0724デフォルトの名無しさん
2007/09/19(水) 21:17:120725デフォルトの名無しさん
2007/09/19(水) 21:20:55猫でも分かるC言語のIMEの項を読みつつ
DelphiでDirectX画面上での文字入力は作ってみたことがありますが
それより数倍困難だとしたら今回は諦めようと思います。
D言語で実装されてるサポート機能はどんなもんがありますかね?
0726デフォルトの名無しさん
2007/09/19(水) 21:24:09D言語に限らなければIMEを抽象的なAPIのレイヤーを介してアプリから扱えるのか?
現時点では言語に関係なくかなり大変な印象があるんだが
0727デフォルトの名無しさん
2007/09/19(水) 21:28:13MozillaのソースからIME関係の部分を取ってきてライセンスをMPLで使うとか。
0728デフォルトの名無しさん
2007/09/19(水) 21:36:450729デフォルトの名無しさん
2007/09/19(水) 21:37:34カーソルキーとローマ字入力のための英数字情報のキー入力を渡してやって、
変換指示を出して 文節分割状態(と選んでる文節と)と変換候補一覧(と選んでる候補)をもらって
確定文字列をもらって
みたいな処理だけだったと思います。
あとはバックスペースで削除とかカーソル位置の移動とかです。
変換範囲の変更(shift+→とか)はキー入力を渡せばIME側がやってくれました。
ただ、そのキー入力を渡すためにウィンドウのKeyPressをIMEリレーする部分を
OpenGL環境でどうやったものかとかが未知なんです。(あと上に上げたいろんな処理が仕様が同じかどうかとか)
delの時はonKeyPressイベントから普通にやったんですけど、
そんときはDirectXの画面はウィンドウのキャンバスがポートだったからできた(あってるか微妙)けど、
OpenGL直実行とかの場合はGUIウィンドウは出てないような気がするし・・・?
0730デフォルトの名無しさん
2007/09/19(水) 21:39:370731デフォルトの名無しさん
2007/09/19(水) 21:41:14ふーんこんなのあるのか
SKKはエンドユーザ層には使えんからダメじゃね
0732デフォルトの名無しさん
2007/09/19(水) 21:50:20既存のアプリのソース公開されてるのを見るのは盲点でした。
でも今ちょっとぐぐったけどMozillaはC++じゃ無いんですか?
>>728
初めて聞いたのでググッてみました。
Emacsってエディタですよね、ライブラリとして使えたら良さそうです。
>>730
行って来ます
0733デフォルトの名無しさん
2007/09/19(水) 21:50:260734727
2007/09/19(水) 21:56:48>でも今ちょっとぐぐったけどMozillaはC++じゃ無いんですか?
そう。
>D言語に限らなければ
の話ね。
D言語に限るならMozillaからの移植が一番だと思う。MPLはGPLに比べて緩いし。
0735デフォルトの名無しさん
2007/09/19(水) 21:58:35ああ、なるほど、すいません。
0736デフォルトの名無しさん
2007/09/19(水) 23:36:420737デフォルトの名無しさん
2007/09/20(木) 00:43:300738デフォルトの名無しさん
2007/09/20(木) 08:46:14SDL-IMを使えばDirectShowでもOpenGLのサーフェイスでも
自分で書くコードは同じにできるようだね?
wxDは後で見るけどIM関係あったっけ?
0739デフォルトの名無しさん
2007/09/20(木) 20:34:20mainとWinMainを抽象化するいい方法はないでしょうか。
DMDを使っているのですが、ライブラリ側にWinMainを混ぜようとしたらきちんとリンクしてくれませんでしたorz
0740デフォルトの名無しさん
2007/09/20(木) 20:38:22wxって基本的にはWin32ならWin32、UnixならGTKみたいにネイティブのコンポーネントを
そのまま使ってるから、下のレイヤがIME対応してりゃ自動的に動くんじゃねぇか?
逆に、IMEをプログラマが手で制御するための手段は用意されてないかも
0742デフォルトの名無しさん
2007/09/20(木) 21:08:50mainでいいんじゃね?
Windowsアプリ時にも別にWinMain書く必要はないってどっかでみた。
0743デフォルトの名無しさん
2007/09/20(木) 21:21:50黒い窓が出てもいいんならな
0744デフォルトの名無しさん
2007/09/20(木) 21:45:44EXETYPE NT
SUBSYSTEM WINDOWS
を含んだ.defをリンカに食わせてやったら、
MessageBoxAのみのmain関数を実行しても黒い窓が出なかった。
あとhInstanceを正しく持ってこれるかどうかにかかってる感じ
この辺はwin32apiスレで聞いたほうがよさそうなのでそっちに行ってくる
あとは初期化処理をinitializeとか書かせずに実行したり、
流れてくる例外を自動的に拾ったりが出来るかどうかだな
0745デフォルトの名無しさん
2007/09/20(木) 22:05:160746デフォルトの名無しさん
2007/09/20(木) 23:03:470747デフォルトの名無しさん
2007/09/20(木) 23:06:480748デフォルトの名無しさん
2007/09/20(木) 23:31:070749デフォルトの名無しさん
2007/09/20(木) 23:31:250750デフォルトの名無しさん
2007/09/20(木) 23:34:590751デフォルトの名無しさん
2007/09/21(金) 00:02:54これはnewで作っちゃっていいのでしょうか
なんとなくscopeつきで返したい気もしますが。
0752デフォルトの名無しさん
2007/09/21(金) 00:30:21>あとhInstanceを正しく持ってこれるかどうか
これでおk
HINSTANCE hInst;
static this(){
hInst = GetModuleHandle(null);
}
0753デフォルトの名無しさん
2007/09/21(金) 00:32:17scope付きだと無くなってしまうがな
0754デフォルトの名無しさん
2007/09/21(金) 08:57:460755デフォルトの名無しさん
2007/09/21(金) 16:16:34ルーク GCを信じるんだ
0756デフォルトの名無しさん
2007/09/21(金) 16:25:37おとなしくForthで書きたいと思います
というのは置いといて、
C++bナ行列をExpression Templateで書いていて、
演算子でExpressionの一時オブジェクトを生成し、
デストラクタで実計算をやっていたので、
さて同等品をどう実装したものかとちょいと考えておりまして。
0757デフォルトの名無しさん
2007/09/22(土) 11:12:28できれば、画像処理系での比較だどうれしいです。
0758デフォルトの名無しさん
2007/09/22(土) 12:10:45http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all
0759デフォルトの名無しさん
2007/09/22(土) 15:50:28ありがとうございます。
なんかDが使えそうな気がしてきました。
0760デフォルトの名無しさん
2007/09/22(土) 16:48:38string str;
while(cin >> str)
{
〜
}
をDで書こうと思って
foreach(str;din)
{
〜
}
と書いたら何時まで経っても処理が終わらない。。。
パイプを使ったプログラミングは眼中に無いのか
0761デフォルトの名無しさん
2007/09/22(土) 17:06:180762デフォルトの名無しさん
2007/09/22(土) 17:29:56cin >> str
ってそんなに使うか?
空白文字が字句区切りで、かつエスケープやクオートのようなものは考慮しなくても
良いようなケースでしか使えないだろう。
それって凄く稀だと思うんだが。
ただの行入力をやりたいならgetline()で、そっちはわりと使うけどな。
(のろいけど)
0763デフォルトの名無しさん
2007/09/22(土) 18:26:400764デフォルトの名無しさん
2007/09/22(土) 18:42:270765デフォルトの名無しさん
2007/09/22(土) 19:23:10使えない名前とか、できなくなったキャストとかのエラーはチマチマ直したらコンパイルは通ったのですがリンクでエラーが出てしまいました。
[apply]
[apply] OPTLINK (R) for Win32 Release 8.00.1Copyright (C) Digital Mars 1989-2004 All rights reserved.
[apply] C:\work\D\ttnNewD\src\abagames\ttn\boot.obj(boot)
[apply] Error 42: Symbol Undefined _D8abagames3ttn6screen6Screen7__ClassZ
[apply] C:\work\D\ttnNewD\src\abagames\ttn\boot.obj(boot)
[apply] Error 42: Symbol Undefined _D8abagames4util3sdl3pad13RecordablePad7__ClassZ
[apply] C:\work\D\ttnNewD\src\abagames\ttn\boot.obj(boot)
[apply] Error 42: Symbol Undefined _D8abagames4util3sdl3pad13RecordablePad5_ctorMFZC8abagames4util3sdl3pad13Recorda
blePad
[apply] C:\work\D\ttnNewD\src\abagames\ttn\boot.obj(boot)
・
・
・
[apply] Error 42: Symbol Undefined __init_11TypeInfo_Aa
[apply] C:\work\D\ttnNewD\src\abagames\util\iterator.obj(iterator)
[apply] Error 42: Symbol Undefined _D6object9Exception8toStringFZAa
[apply] C:\work\D\ttnNewD\src\abagames\util\iterator.obj(iterator)
[apply] Error 42: Symbol Undefined _D6object9Exception5printFZv
[apply] C:\work\D\ttnNewD\src\abagames\util\iterator.obj(iterator)
[apply] Error 42: Symbol Undefined __Class_9Exception
[apply] C:\work\D\ttnNewD\src\abagames\util\sdl\recordableinput.obj(recordableinput)
[apply] Error 42: Symbol Undefined _D6object9Exception5_ctorFAaZC9Exception
[apply] --- errorlevel 29
BUILD FAILED
C:\work\D\ttnNewD\build.xml:45: apply returned: 29
Total time: 0 seconds
このようにError 42のSytmbol Undefinedが大量に出ているのですが、これってどういう意味ですか?意味がわからないので何をしたらいいのかさっぱりです。
0766デフォルトの名無しさん
2007/09/22(土) 19:25:541度に全て読み込もうとするためメモリを食い尽くしそのままプログラムが落ちる。
つまり、潜在的DoS脆弱性を含む事になる。
ifstream.getlineは引数にバイト数が指定できるため正しく使えば問題は無い。
0767デフォルトの名無しさん
2007/09/22(土) 20:42:50std::getlineは使ってはならないは使ってはならない。
0768デフォルトの名無しさん
2007/09/22(土) 21:11:040769デフォルトの名無しさん
2007/09/22(土) 21:56:39// http://www.mozilla-japan.org/
// シンプル プログミング ツール
// http://proforceone.web.fc2.com/
// 素因数分解サンプルプログラム
// Calculation processing にコピーして[RUN]
MAX=1000;br();
for(x=2;MAX>=x;x++){write(" "+x+" ⇒");
for(i=2;x>=i;i++){if(0==x%i){k=0;
for(j=2;(i>=j)&&(1>=k);j++){
if(0==i%j){k++;}
} if(1==k){write(" "+i);}
}} br();
} br();
0770デフォルトの名無しさん
2007/09/22(土) 22:34:27std:getline Considered Harmful Considered Harmfulってやつか
0771デフォルトの名無しさん
2007/09/22(土) 23:56:32サイズに特に制限を設けないようなほとんど全ての言語が脆弱だということに
なるんじゃなかろうか。
今時の言語はほぼ全部ダメじゃないか?
0772デフォルトの名無しさん
2007/09/23(日) 00:18:41ファイルサーバ内のファイルを信頼するのを脆弱性と呼ぶのは違う気がするし。
0773デフォルトの名無しさん
2007/09/23(日) 01:04:230774765
2007/09/23(日) 01:15:25結果的に直す必要があったのは、
ポインタに配列を代入しようとしているところでエラーがでているのをcast(kata *)つけていくだけでした。
0775デフォルトの名無しさん
2007/09/23(日) 01:32:04C++ + STL > D
C++ + STL < D + Tango
C++ + STL + IDE >>>>> 越えられない壁 >>>>> D + Tango
0776デフォルトの名無しさん
2007/09/23(日) 01:35:08そんな軟弱野郎にD言語は使って欲しくないね。むしろ使うな。
さてと、VS Expressのインストールでもするか。
0777デフォルトの名無しさん
2007/09/23(日) 07:29:50おつっす
0778デフォルトの名無しさん
2007/09/23(日) 10:57:450779デフォルトの名無しさん
2007/09/23(日) 12:26:44それはないだろ
0780デフォルトの名無しさん
2007/09/23(日) 16:10:51誰かVS並の機能実装したIDE作って壁超えてくれんだろうか、
VS のD Pluginでもいいから。
0781デフォルトの名無しさん
2007/09/23(日) 16:11:350782デフォルトの名無しさん
2007/09/23(日) 16:23:480783デフォルトの名無しさん
2007/09/23(日) 16:28:27便利なツールが無くてもそつなくこなせて行けてるって事では幸せ。
0784デフォルトの名無しさん
2007/09/23(日) 17:31:02趣味レベルでメモ帳から始まった俺的にはJmEditor、Poseidonにそれはもう歓喜したんだが
0785デフォルトの名無しさん
2007/09/23(日) 17:56:020786デフォルトの名無しさん
2007/09/23(日) 18:02:460787デフォルトの名無しさん
2007/09/23(日) 18:04:120788デフォルトの名無しさん
2007/09/23(日) 18:08:270789デフォルトの名無しさん
2007/09/23(日) 19:21:18そんなあなたにはぜひVisualStudio2005+C#を体験してもらいたい
0790デフォルトの名無しさん
2007/09/23(日) 22:50:050791デフォルトの名無しさん
2007/09/23(日) 23:47:16これで但し書き消せる
0792デフォルトの名無しさん
2007/09/23(日) 23:50:19今はどっちもストレスなく使えるバランス状態なんだが、そろそろどっちかに偏りそうで怖いw
0793デフォルトの名無しさん
2007/09/24(月) 00:01:510794デフォルトの名無しさん
2007/09/24(月) 01:41:56しかしviなら、vi以外で「:w」とか「kkkkkkkkkkkkkk」
とか書いちゃうことは、それほど無い。
0795デフォルトの名無しさん
2007/09/24(月) 01:52:080796デフォルトの名無しさん
2007/09/24(月) 04:07:00みることが多いが、
viでもエスケープ連打してたり0押しちゃってたりすることは多いぞ。とくに
直前に使ってた場合とか。
0797デフォルトの名無しさん
2007/09/24(月) 09:19:20普通のエディタの入力画面はviの入力モードに見える(編集モードには見えない)んで
間違ってj連打とかはやらんな
0798デフォルトの名無しさん
2007/09/24(月) 11:00:19というかそろそろスレ違いだな
0799デフォルトの名無しさん
2007/09/24(月) 15:01:550 や j は押さないけど。
0800デフォルトの名無しさん
2007/09/24(月) 16:34:230801デフォルトの名無しさん
2007/09/24(月) 16:35:140802デフォルトの名無しさん
2007/09/24(月) 17:21:04// foo.d
import hoge;
class Foo {
enum Bar { FOO, BAR }
Hoge hoge;
}
// hoge.d
import foo;
class Hoge {
this(Foo.Bar foo) {
}
}
fooを先にすればHogeが見つからない、
Hogeを先にすればenumの前方参照といわれます。
定型的な解決法はありますでしょうか。
0803デフォルトの名無しさん
2007/09/24(月) 18:04:48循環依存していいのはJavaのinner classのようなとっても蜜なクラス間だけ。
0804デフォルトの名無しさん
2007/09/24(月) 18:30:20プラットフォーム依存する部分を別ファイルで切り離そうと思ったんですが、
mixinにしてみます。
0805デフォルトの名無しさん
2007/09/24(月) 18:51:48C++はSTL使えるくらいの者なんですが、
今日からちょっと遊んでみようとおもってはじめたんですけど、
なんかエラーが英語でわからなくて困っています。
template Array.print(T) does not match any template declaration
template Array.print(T) cannot deduce template function from argument types (int[],int)
T[] print(T)(T[] Array,uint N){
foreach(uint i,T val;Array){
writef("%s ",Array.toString());
if(i%N >= N-1) printf("\n");
}
return Array;
}
int main(char[][] args){
int[] Array = new int[16];
print(Array,8);
// Array.print=8;//最終的にはこうしたい。
return 0;
}
お願いします。
0806デフォルトの名無しさん
2007/09/24(月) 19:03:27最近Dいじれる環境無くしたから確認できねえ><
0807デフォルトの名無しさん
2007/09/24(月) 19:15:54仮引数Nはuintなのに、実引数がintだから型推論が上手くいってないみたいね。
>>806
Array.print(8); が限界だね。
0808デフォルトの名無しさん
2007/09/24(月) 19:33:31今度から気をつけます。
=で代入は記憶違いだったっぽいです。
最後に、ありがとう!!
import std.stdio;
void print(T)(T[] Array,int N){
foreach(uint i,T val;Array){
writef(val,' ');
if(i%N >= N-1) printf("\n");
}
//return Array;
}
int main(char[][] args){
int[] Array = new int[16];
int single=16;
Array.print(9);//最終的にはこうなった。
return 0;
}
0809デフォルトの名無しさん
2007/09/25(火) 01:17:35ひとまず1.020に戻しとこうっと・・・。
0810デフォルトの名無しさん
2007/09/25(火) 14:13:20もう待ちくたびれたー
0811デフォルトの名無しさん
2007/09/25(火) 15:15:180812デフォルトの名無しさん
2007/09/25(火) 16:01:560813デフォルトの名無しさん
2007/09/25(火) 16:32:33配列系のアルゴリズムあると便利そうですね。
しかしなー、配列をreturnできるのがこんなに便利だと思いませんでした。
以下が成果物です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4968.zip
暇だったらもっと長い一行処理をかんがえてみませんか?
0814デフォルトの名無しさん
2007/09/25(火) 17:24:14perlだと、関数の引数を省略したときに
前の処理結果が自動的に渡される、
という感じの暗黙の一時変数があるんだっけ?
0815デフォルトの名無しさん
2007/09/25(火) 19:38:13あれなかなか便利だよね
0816デフォルトの名無しさん
2007/09/25(火) 20:43:40ええ…私産むことに決めたの。
0817デフォルトの名無しさん
2007/09/25(火) 21:14:11なんかバグ呼びそうな仕様だなぁ・・・。
0818デフォルトの名無しさん
2007/09/25(火) 21:57:430819デフォルトの名無しさん
2007/09/25(火) 22:07:42perlでも完全性が要求される部分ではあまり使わんねえ。
手軽にパッパと書くには重宝するが、C系言語に飼いならされると存在を忘れる
0820デフォルトの名無しさん
2007/09/25(火) 22:24:16それすごいね。説明されないと読めないけどさ。
>>819
複雑になるほど邪悪なかんじだなぁ。
俺、C系の人間だから、使うこともないけどねぇ。
0821デフォルトの名無しさん
2007/09/25(火) 22:59:54ちょっと触らなくなると直ぐにカオス世界に彷徨ってしまう。
i18n周りが落ち着いたらD言語スクリプトで書きたいところだ。
0822デフォルトの名無しさん
2007/09/25(火) 23:03:340823デフォルトの名無しさん
2007/09/25(火) 23:42:06return toUTF16z(s); // return する前にconstを取らないといけない
}
const(char)[]の配列からconstを取り除くには.dupするだけですが
配列を.ptrしたものからconstを取り除くにはどうしたらいいでしょうか
0824デフォルトの名無しさん
2007/09/25(火) 23:43:080825デフォルトの名無しさん
2007/09/25(火) 23:45:36汎用的に使える方法はないと思う。
今回の場合なら、
char* toWstringz(const(char)[] s) {
return cast(wchar*)(toUTF16(s) ~ '\0');
}
でいいとおもう。
0826デフォルトの名無しさん
2007/09/25(火) 23:52:44今のところこういう風にしていたんですけど,やっぱりこれくらいしかないんですかね
どうもです
wchar* toWstringz(const(char)[] s) {
return (toUTF16(s)~"\0").ptr;
}
0827デフォルトの名無しさん
2007/09/26(水) 10:28:47躊躇なくcastでconst除去で良いような。
0828デフォルトの名無しさん
2007/09/26(水) 11:49:27書き換えられないようにプログラマが責任持てって公式で言ってるし。
そもそもDigital Mars以外が作ったPhobosが完全に同じ実装とは限らないわけで…
.dupしても勝手に最適化でうまいことしてくれないかなぁ…
0829デフォルトの名無しさん
2007/09/26(水) 15:23:010830デフォルトの名無しさん
2007/09/26(水) 16:52:26win32apiとかがchar*じゃなくてconst(char)*で文字列を受け取ってくれたら
当面の問題は解決するんですけども
0831デフォルトの名無しさん
2007/09/26(水) 17:09:53//int MessageBoxW(uint, wchar*, wchar*, uint); // こうじゃなくて
int MessageBoxW(uint, const(wchar)*, const(wchar)*, uint);
}
void main() {
MessageBoxW(0, "hello", "sample", 0);
}
試しに書いてみたら配列からポインタに暗黙変換されるんだが
これは仕様と食い違うのでは・・・
0832デフォルトの名無しさん
2007/09/26(水) 17:12:32DMD 2.004、Ubuntu 7.04、AMD64だとダメなのかな。
no such file or directoryとかcommand not foundとか言われるんだよ。
パス通したし、dmd.confとlibphobosもちゃんとコピーしたし、
chmod u+xもやってるんだけど。
% cd ~/dmd/bin
% which dmd
/home/[ユーザ名]/dmd/bin/dmd
% dmd
zsh: command not found: dmd
% ./dmd
zsh: no such file or directory: ./dmd
% file ./dmd
./dmd: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped
% ldd ./dmd
not a dynamic executable
%
0833デフォルトの名無しさん
2007/09/26(水) 17:50:39invariant配列がconstポインタに暗黙変換されるのは仕様どおりだと思うけど。
http://www.digitalmars.com/d/arrays.html
> So, why does the first string literal to printf not need the cast?
> The first parameter is prototyped as a char*, and a string literal
> can be implicitly cast to a char*.
http://www.digitalmars.com/d/final-const-invariant.html
> Mutable and invariant types can be implicitly converted to const.
0834デフォルトの名無しさん
2007/09/26(水) 22:25:22Solarisのスクリプトのほうだけどな…
0835デフォルトの名無しさん
2007/09/26(水) 23:35:35以下自己満足
// 配列の部分要素列を任意の比較対象とマッチしてインデックス配列を返すテンプレート
int[] listSub(T)(in T[] arr, in T[] sub) {
int[] match;
foreach( int i, T c; arr[0..$-sub.length] ) if(arr[i..i+sub.length] == sub[] ) match~=i;
return match;
}
// バイナリ配列(っぽいもの)から、C++のreinterpret_cast風の変換を行うテンプレート
void reinterpret(T, S)(ref T x, out S y) {
void* tmp = cast(void *)&x;
y = *(cast(S*)tmp);
}
// バイナリファイルから"Search Target"文字列を検索してインデックスを列挙し、
// そのインデックスから定数バイトずれた場所の値をintとして再解釈する例
void analyseREC(char[] filename) {
auto rec = cast(byte[])read(filename);
auto sub = cast(byte[])"Search Target";
auto indices = listSub(rec, sub);
int tmp;
real[] result;
foreach(i; indices) {
reinterpret(rec[i-13], tmp);
result ~= tmp*0.01;
}
}
0836デフォルトの名無しさん
2007/09/26(水) 23:49:54*(cast(int*)&(some_pointer))
で解決することに気づいて、恥ずかしい限りです。
reinterpret_cast!(TYPE) ...
と書くC++風の構文のテンプレートを考えております……
0837デフォルトの名無しさん
2007/09/27(木) 01:11:02うは 配列はすべて.ptr必須なのかと思ってた
0838デフォルトの名無しさん
2007/09/27(木) 03:30:20なんか考えなきゃいけない問題点とかあったっけ?
template reinterpret_cast(U){
U reinterpret_cast(T)(ref T x){
return*cast(U*)&x;
}
}
0839デフォルトの名無しさん
2007/09/27(木) 12:28:280840デフォルトの名無しさん
2007/09/27(木) 12:51:090841デフォルトの名無しさん
2007/09/27(木) 13:17:38同名のテンプレートでさらにくるむというのは(個人的に)盲点でした……
ありがとうございました。
>>839
Dの警告に関するページで、
# 普通に暗黙のキャストが許される場面でのみ動作する、 と定義する implicit_cast をテンプレートで実装する。
と書かれています。
0842デフォルトの名無しさん
2007/09/27(木) 19:26:47class A {
}
class B : A {
}
int main()
{
auto b= new B;
auto a= cast(A)b;
assert( !(a is null) );
return 0;
}
うは、まじだwwwww
ごみおいときます・・
T checkcast(T)(Object o)
{
ClassInfo ci= o.classinfo;
while( 1 ) {
if( T.classinfo == ci ) return cast(T)o;
if( ci == Object.classinfo ) break;
ci= ci.base;
}
return null;
}
0843デフォルトの名無しさん
2007/09/28(金) 00:27:500844デフォルトの名無しさん
2007/09/28(金) 01:12:020845デフォルトの名無しさん
2007/09/28(金) 01:26:04つーか実は2ch自体は空白そのまま持ってるから
ブラウザ側で対応すれば良いんだぜ?
確かいくつかの2chブラウザは空白も表示するハズ
0846デフォルトの名無しさん
2007/09/28(金) 04:57:110847デフォルトの名無しさん
2007/09/28(金) 09:20:50{
T.keytype key;
foreach( i, a; as) {
key= i;
break;
}
}
int[string] array;
foo( array);
なんてことできないかな
連想配列のKeyTypeをとりたいのです
0848デフォルトの名無しさん
2007/09/28(金) 09:25:17コード書くならpreタグやcodeタグを使ってくれ、って立場だからねえ。
やっぱ2chや2chブラウザでなんとか処理するのが筋かと。
0849デフォルトの名無しさん
2007/09/28(金) 09:36:32今更言っても詮無いことだが。
お陰でソースコードの類は張りにくいし読みにくいわ
MS Pゴシック12ptでしかマトモに見れないプロポーショナルAAなどという代物が
流行るわ
ロクなことがない。
CGIにしても、改行だけは<br>に置換するけど空白は放置ってのも微妙に半端な仕様。
どっちかに統一しろよ。
0850デフォルトの名無しさん
2007/09/28(金) 09:51:14ム/マとWebProg…後はUNIXとかLinux辺り?
逆にAA系の板は今の仕様が良かったんだろうし
板によってpre標準にできんものかねぇ
…まぁスレ違いの気がするが
0851デフォルトの名無しさん
2007/09/28(金) 10:04:04ふつうにis式でおk
template key_type(T){
static if(is(T A:U[A],U))
alias A key_type;
}
void foo(T)(T as){
key_type!(T) key;
foreach(i,a;as){
key = i;
break;
}
}
0852デフォルトの名無しさん
2007/09/28(金) 10:11:45おお・・ありがとうございます m(_ _)m
0853デフォルトの名無しさん
2007/09/28(金) 12:28:29D2.0でしか動かないのね・・・
乗り換え時かな
0854デフォルトの名無しさん
2007/09/28(金) 16:30:060855デフォルトの名無しさん
2007/09/28(金) 21:10:040856デフォルトの名無しさん
2007/09/28(金) 21:17:45//stageとdoorはenum.
stageInfoAry[stage.t1].doorAry.length = 4;
stageInfoAry[stage.t1].doorAry[0] = door.r2;
stageInfoAry[stage.t1].doorAry[1] = door.y7;
stageInfoAry[stage.t1].doorAry[2] = door.y1;
stageInfoAry[stage.t1].doorAry[3] = door.y5;
これが、
with(stageInfoAry[stage.t1])
{
doorAry.length = 4;
with(door) doorAry[] = [r2, y7, y1, y5];
}
こう書けたことに感動した。
0857デフォルトの名無しさん
2007/09/28(金) 22:03:34doorAry.length = 4;
いらん気がする。
0858デフォルトの名無しさん
2007/09/28(金) 22:09:56with(door)
doorAry[] = [r2, y7, y1, y5];
ってか
0859デフォルトの名無しさん
2007/09/28(金) 22:11:080860デフォルトの名無しさん
2007/09/28(金) 22:37:47stageInfoAry[stage.t1].doorAry = [r2, y7, y1, y5];
でおk
0861デフォルトの名無しさん
2007/09/28(金) 22:48:59これいいね便利
0862856
2007/09/28(金) 23:07:07doorAry.length = 4;なしで書けますね。
勉強になりました。
因みに、
自分が最初にやっていたのは配列要素へのコピーで、
教えてもらったのは参照先の変更?みたいなことですね。
0863デフォルトの名無しさん
2007/09/28(金) 23:24:23http://www.kmonos.net/alang/d/expression.html
is式の7を参照のこと
>>854
このis式の7が、D1.0にはない
残念ながら
0864デフォルトの名無しさん
2007/09/28(金) 23:42:09thx
しかしこのis式はなんて複雑なんだ
使いこなせるようになるまで時間かかりそうだ
0865デフォルトの名無しさん
2007/09/28(金) 23:50:160866デフォルトの名無しさん
2007/09/29(土) 00:07:020867デフォルトの名無しさん
2007/09/29(土) 01:36:38boostの下記の例みたいな。
ttp://www.kmonos.net/alang/boost/classes/bind.html
0868デフォルトの名無しさん
2007/09/29(土) 01:38:340869デフォルトの名無しさん
2007/09/29(土) 02:02:26有効だったコードが今のdmdだと通らなかったりするんだけど
正しい使い方をどこかで数種類示してくれないかなあ
0870デフォルトの名無しさん
2007/09/29(土) 02:22:13テンプレート関数にデフォルト引数を使えるようにするには、とかちょいと考えていてこれが使えないものかと。
0871851
2007/09/29(土) 11:36:37>>853
ちと泥臭いけど1.0でもOKな方法あるよ
template key_type(T){
alias typeof(T.keys[0]) key_type;
}
個人的にはD2.0マンセーなので、
1.0でも動く書き方知ってても
ついつい2.0用の書き方してしまう。
0872デフォルトの名無しさん
2007/09/29(土) 20:06:30std.bindが動かないことを話題にしている人が
どこにもいないのはなぜなんだぜ?
0873デフォルトの名無しさん
2007/09/29(土) 20:44:40wcstombs関数宣言でmbs側にinが付いてたり
標準ライブラリの問題を語りだすと話題が尽きなくなる
0874デフォルトの名無しさん
2007/09/29(土) 21:02:18以前にも何度か話題に上がってるが、正直何が原因で動かないのか分からないし
ウォルタたんが直してくれないことにはどうしようもない。
0875デフォルトの名無しさん
2007/09/29(土) 21:15:280876デフォルトの名無しさん
2007/09/29(土) 23:33:380877デフォルトの名無しさん
2007/09/29(土) 23:44:290878デフォルトの名無しさん
2007/09/30(日) 00:19:490879デフォルトの名無しさん
2007/09/30(日) 02:19:590880デフォルトの名無しさん
2007/09/30(日) 09:18:22もう一度やってみた
0881デフォルトの名無しさん
2007/10/01(月) 06:23:58俺もやってみようとしたけど、こわくなってやめてしまった・・・
入力後のスクショなどうpしてくれませんでしょうか
0882デフォルトの名無しさん
2007/10/01(月) 07:01:13言語の壁は厚いなぁ…
0883デフォルトの名無しさん
2007/10/01(月) 08:58:28他のphobosのバグも上がってないのあったら
ここにコード書いてくれたら報告できるかもしれない
0884デフォルトの名無しさん
2007/10/01(月) 12:55:170885デフォルトの名無しさん
2007/10/01(月) 12:57:400886デフォルトの名無しさん
2007/10/01(月) 13:14:18ま、それはいいか。。。
0887デフォルトの名無しさん
2007/10/01(月) 17:37:34だれかうぉるたんにわかり易く説明してやる香具師はいないのかな
0888デフォルトの名無しさん
2007/10/01(月) 17:46:17使うことを想定してるんじゃないかと思っている
0889デフォルトの名無しさん
2007/10/01(月) 17:52:21条件の再現が面倒くさすぎて報告する気にならん
0890デフォルトの名無しさん
2007/10/01(月) 18:08:22inaba san
o tegami wo domou arigaou gozaimasu.
0891デフォルトの名無しさん
2007/10/01(月) 19:19:06細かいのは入れてないけど大筋は入ってると思うよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5006.zip
作ってて思ったんだけど、1ラインプログラムって可読性、非常に悪いね。自分でやってて思っちゃった。何事もほどほどが!!
あと、DTLってあったと思うけど、どんなことできるの?
>>890
I am not Mr K.Inaba. I am Tori. I am poor hobby Programmer.hehe.
ってわけで、大それたことだけど、申し訳ないが、俺は意中の人ではありません。
0892デフォルトの名無しさん
2007/10/01(月) 19:40:13Array.d(191): private void Swap(T)(inout T A,inout T B){//i am not public. hope make good swap by others
DTLは更新されてないような
0893デフォルトの名無しさん
2007/10/01(月) 20:06:56あれ?ウチではちゃんとうごいたんだけど。。。ま、それはいい。
refってforeach専用だと思ってた。
しってたらそれ使うっていうかつぎからそうする〜!!多謝!
ってかね、そっちの失態より妖しい英語のほうが恥ずかしい!!
で。
DTLちょっと0.2.1ってのがあったからのぞいてみたけど、STLの後追いっぽいねぇ。人のことは言えないけどさ。
最終更新日が2004年あたりだったなぁ。
感想としては、Dに足りないのはList構造くらいじゃないかな。
ほかのは配列ラップすれば適当なSTL相当のはできそう。連想配列も標準でサポートしてるし。アロケータ用意しなくても良いし。
0894デフォルトの名無しさん
2007/10/01(月) 20:12:33STLとboostからのポートがあるとうれしいなあ。
random周りはジェネレータだけ移植(ってかCでコンパイルしてリンクだけ出来るように)して、分布はtangoからパチればいいかな?
そこでbindが欲しくなるんだが……
あとinabaさんは大して意味はないですw
ishidaさんが訳者なんで、マニュアルの訳者のinabaさんを選んでみたってわけですわ。
0895デフォルトの名無しさん
2007/10/01(月) 20:15:42inoutいらない子。。。
0896デフォルトの名無しさん
2007/10/01(月) 20:18:070897デフォルトの名無しさん
2007/10/01(月) 20:28:30ネタに混じれ酢しちゃったか。こりゃ申し訳ない。
俺もさ、翻訳できるくらい英語できたら原書がよめてハッピーだろうなー。とか思うわけですよ。(TT
>>896
あ、まちがってなかったか。良かった。
でも、refの方がかっこいいから次からref使う〜。
まー、C++からの感覚だとそっちのほうがリファレンス!ってかんじで覚えやすい。かも。
0898デフォルトの名無しさん
2007/10/01(月) 20:40:22実は結構前からやってたのかもしれんが
�Hにわかるならおれにもわかるはず!とTangoの解説に期待さらしage
0899デフォルトの名無しさん
2007/10/01(月) 20:41:35俺、boostはむりです。
触ったことないんで。STLが限界です。
っていうか、時間があったら、言いだしっぺの法則やってみません?(汗
0900デフォルトの名無しさん
2007/10/01(月) 20:44:40Set of libraries ported from Boost.
必要なのが全然ないから頑張って欲しい
ttp://dsource.org/projects/tangobos
Tangobos is a compatibility layer to allow most Phobos software to be compiled unmodified on Tango.
ちょっといじってみる前に宣伝
0901デフォルトの名無しさん
2007/10/01(月) 20:46:42refにウォルタたんが変なものを追加しようとしてるとの未確認情報もあるから、inout使っとけ。
0902デフォルトの名無しさん
2007/10/01(月) 20:47:58その未確認情報plz
0903デフォルトの名無しさん
2007/10/01(月) 21:03:58boost::any とか std.boxでいいだろとかw
random周りは個人的に必要なので適当に作りますわ。
さて、>652で予告してたライブラリですが、
現在C++版からポートしつつ、ちょびちょびいじってます。
一応簡単な表示まではできるようになってきたという程度ですが、
ちょいと説明書きをつけてどっか載せますね。
0904デフォルトの名無しさん
2007/10/01(月) 21:13:40C89とかでやってきたから、仕様が変わるって局面に出会ったのはじめてかもしれん。C99はVCだと半端っぽいし。
強烈!の一言につきるかも。でも、よりよくなってほしいね、今のうちに。
で、>>898の解説を軽く眺めてきたけど、TangoにArrayってライブラリあるのね。
はぁ〜、また車輪の〜 か。(TT
ま、それはいい。
いい解説だねぇ。結構自分には合ってる感じだ。ワクテカしててもいいですか!?
0905デフォルトの名無しさん
2007/10/01(月) 21:39:470906デフォルトの名無しさん
2007/10/01(月) 21:46:24ただ既にDHell2があるからportするには微妙な立ち位置かも
ttp://www5.atwiki.jp/yaruhara/pages/80.html
0907デフォルトの名無しさん
2007/10/01(月) 21:47:21ttp://psychlops.l.u-tokyo.ac.jp/download/D/Psychlops_D_Win32_GL_Alpha_20071001.zip
取り急ぎなのでぞんざいな解説で申し訳ないのですが、
よろしければごらんください。
0908デフォルトの名無しさん
2007/10/02(火) 01:50:410909デフォルトの名無しさん
2007/10/02(火) 05:27:560910デフォルトの名無しさん
2007/10/02(火) 05:36:27正規表現周りが腐ってるとか、ああああああ
0911デフォルトの名無しさん
2007/10/02(火) 06:48:33正規表現ライブラリの`鬼車`ってやつを使うことを考えては?
一応Win/Linux両方で使えたはず・・・
0912デフォルトの名無しさん
2007/10/02(火) 08:50:570913デフォルトの名無しさん
2007/10/02(火) 09:29:500914デフォルトの名無しさん
2007/10/02(火) 16:03:38こうなったらもうD以外の言語を発掘するしか。
ネイティブバイナリ吐けて基本OOPでGCと構造化例外があってメタプログラミングが強力で、
さらに標準ライブラリが強力で設計もクールで文字列の扱いもIO含めて問題無しでIDE開発の相性も良くて、
できればRubyばりのクロージャなんかあって構文はC系列が良くて、
そんな言語がどっかに存在しませんか。時空のどこかに。
0915デフォルトの名無しさん
2007/10/02(火) 16:26:30自分で作ればいいんじゃね?
0916デフォルトの名無しさん
2007/10/02(火) 16:45:34俺には質の善し悪しはわかんねーや・・・
Dの文字列の国際化対応が微妙なのはかろうじて感じるが
Windowsのコンソールで化けなければ当面納得できるような
IOはC++のiostreamとboost::asioくらいのものがあれば納得されるのだろうか
すまんがJavaは知らないんだ
0917デフォルトの名無しさん
2007/10/02(火) 16:48:060918デフォルトの名無しさん
2007/10/02(火) 17:24:060919デフォルトの名無しさん
2007/10/02(火) 18:48:590920デフォルトの名無しさん
2007/10/02(火) 20:57:58phobosのときは火星の衛星だからなるほどーって思ってたのに・・・・w
0921デフォルトの名無しさん
2007/10/02(火) 21:11:310922デフォルトの名無しさん
2007/10/02(火) 21:56:290923デフォルトの名無しさん
2007/10/03(水) 00:31:400924909=910
2007/10/03(水) 01:01:52機能的には別に困らないんだが、関数のインタフェースが珍妙だなと思ったのよ
他のスクリプト言語をメインにやってる俺からすると扱いづらくてね
うんこは言い過ぎだったかもしれない
0925デフォルトの名無しさん
2007/10/03(水) 03:17:17おれもだよ
0926デフォルトの名無しさん
2007/10/03(水) 03:20:420927デフォルトの名無しさん
2007/10/03(水) 07:08:030928デフォルトの名無しさん
2007/10/03(水) 09:26:240929デフォルトの名無しさん
2007/10/03(水) 11:56:26それマ(ry
0930デフォルトの名無しさん
2007/10/03(水) 12:35:19言いたかないけど言っちゃうけど、それなんてcommon lisp?
0931デフォルトの名無しさん
2007/10/03(水) 13:48:05C++のnew T[n]みたいな構文で書ければいいんですが、常套手段がありましたらご教示ください。
0932デフォルトの名無しさん
2007/10/03(水) 16:50:46他の人を待つ!
import std.stdio;
T[] Alloc(T)(size_t N){
return new T[N];
}
int main(char [][]){
auto R = Alloc!(int)(10);
foreach(V;R){
writef(V,' ');
}
return 0;
}
0933デフォルトの名無しさん
2007/10/03(水) 16:52:190934デフォルトの名無しさん
2007/10/03(水) 16:56:310935デフォルトの名無しさん
2007/10/03(水) 16:58:520936デフォルトの名無しさん
2007/10/03(水) 17:14:08はい。そういうことです。
一度foreachをまわしてインスタンスを生成するのがちょいと面倒なもので。
0937デフォルトの名無しさん
2007/10/03(水) 17:19:39俺ならこう書くかな。
T[] alloc(T)(size_t n) {
auto ts = new T[n];
static if(is(typeof(new T) == T))
foreach(ref t; ts) t = new T;
return ts;
}
0938デフォルトの名無しさん
2007/10/03(水) 17:27:31Dのクラス使ったの初めてだから知らなかった。申し訳ない。
しかしなー、こんなところに穴があるとは、コレクション作りにくいなぁ。。。
import std.stdio;
import std.string;
class C{
static int i;
int Val;
this(){
Val = i++;
}
char[] toString(){
char[] str = "I am " ~ std.string.toString(Val) ~"th Class";
return str;
}
}
T[] ClassAlloc(T)(size_t N){
T[] Array = new T[N];
foreach(ref T V;Array){
V = new T;
}
return Array;
}
int main(char [][]){
auto R = ClassAlloc!(C)(10);
foreach(V;R){
writefln(V,' ');
}
return 0;
}
0939デフォルトの名無しさん
2007/10/03(水) 17:33:44static if(is(typeof(new T) == T))
これって何やってるの?
0940デフォルトの名無しさん
2007/10/03(水) 17:40:22typeof(new int) == int*
typeof(new Struct) == Struct*
typeof(new Class) == Class
0941デフォルトの名無しさん
2007/10/03(水) 17:46:45そんな便利な!すげー。
0942デフォルトの名無しさん
2007/10/03(水) 18:06:250943デフォルトの名無しさん
2007/10/03(水) 18:13:080944デフォルトの名無しさん
2007/10/03(水) 19:32:210945872
2007/10/03(水) 21:05:00相変わらず誰も反応してくれないので(´・ω・`)
自分でやったらなんとかなった(`・ω・´)
>>881
SSしてうpとか恐ろしくてできない
0946デフォルトの名無しさん
2007/10/04(木) 03:54:20このスレを英語に逐次翻訳して、ウォルタンの巡回コースに追加させればいいんじゃね?
0947デフォルトの名無しさん
2007/10/04(木) 11:48:590948デフォルトの名無しさん
2007/10/04(木) 12:15:40向こうから返答があったら日本語訳してこっちに貼り付けるのか?w
0949デフォルトの名無しさん
2007/10/04(木) 18:38:150950デフォルトの名無しさん
2007/10/04(木) 20:18:080951デフォルトの名無しさん
2007/10/04(木) 20:29:49hoge=getMugamugaInstance();
with( hoge ){
val=100;
vol=200;
vel=300;
fuga=hoge;
}
これを
with( getMugamugaInstance() ){
val=100;
vol=200;
vel=300;
fuga=/* ★ */;
}
て感じで書きたいのです
0952デフォルトの名無しさん
2007/10/04(木) 20:43:36vol=200;
vel=300;
fuga=getMugamugaInstance();
0953デフォルトの名無しさん
2007/10/04(木) 20:50:320954デフォルトの名無しさん
2007/10/04(木) 21:13:55おぉ、なるほど!ありがとう!
0955デフォルトの名無しさん
2007/10/04(木) 21:23:49switchのcase句を書き忘れてWM_DESTROYがgoto関係のラベル化してコンパイル通ったこと。
あー疲れた。。。
0956デフォルトの名無しさん
2007/10/04(木) 21:23:510957デフォルトの名無しさん
2007/10/04(木) 21:35:38フレームワークは自分用だから結構チープですよ。あ、俺の腕もねぇ・・・。
えーっと、昔、C++で作ったやつをポートしてんです。
後処理がなくなってちょっと原本よりシンプルになりそうです。
0958デフォルトの名無しさん
2007/10/04(木) 21:37:250959デフォルトの名無しさん
2007/10/04(木) 21:48:300960デフォルトの名無しさん
2007/10/04(木) 21:50:270961955,957,959
2007/10/04(木) 21:55:42了解!!
0962デフォルトの名無しさん
2007/10/04(木) 22:19:32C++のマップは0返すからそのようにやってたんだけど、やっベー完成できねー。
ってか8割つくってから気づくなんて。。。Orz
0963デフォルトの名無しさん
2007/10/04(木) 22:24:140なんか返されたら困る場合が出てくるからな。
in演算子使うのが常套句。
0964デフォルトの名無しさん
2007/10/04(木) 22:32:06TV get(TK, TV)(TV[TK] aa, TK key, TV _default = TV.init) {
auto p = key in aa;
return p != null ? *p : _default;
}
0965デフォルトの名無しさん
2007/10/04(木) 22:51:36>>963見てネットで探したけど引っかからなくて困ってました。
とりあえず、例外捕まえるように実装したんだけど、
やっぱ例外フリーのほうが精神的に良いのですが、なんとかなりそうですねぇ。
>>963 >>964 の人たち感謝!
0966デフォルトの名無しさん
2007/10/05(金) 00:39:54int[string] aa;
aa["hoge"] = 999;
if (int* v = "hoge" in aa){
writefln(*v);
}
0967デフォルトの名無しさん
2007/10/05(金) 01:18:34理屈が良くわからないですけど。。。
0968デフォルトの名無しさん
2007/10/05(金) 01:27:340969デフォルトの名無しさん
2007/10/05(金) 01:37:42それができてなぜ
with( auto hoge = getMugamugaInstance() ){
val=100;
vol=200;
vel=300;
fuga=hoge;
}
ができないのかね。。。
これができれば >>951 の苦悩もある程度晴れるかと思うのだが。
やっぱ with は TemplateInstance とかもあるから面倒くさいのかな…?
0970デフォルトの名無しさん
2007/10/05(金) 01:46:51めんどくさくなってしまったというか、
なんというかで、最近サパーリですなぁ。
ウォルターたんにコメントもらえたりすると、
なんか嬉しいのでバグ気になるならどんどん、
報告してみたらいいのにと思うのでした。
英語なんて、正確じゃなくてもつたわりゃいいのよ。
伝わんないときもあったけど、大体通じてたように思ふ。
ちゃんとした、サンプルソースがあれば、英語は
半分くらいしか通じなくても、大丈夫。
ビビッてないで、報告すべし!!
0971デフォルトの名無しさん
2007/10/05(金) 01:57:30・ビビってる
・英語アレルギー
・めんどくさい/ひまがない
0972デフォルトの名無しさん
2007/10/05(金) 03:22:33ファイルAに未実装の関数をあえて残しておいて、
ファイルBでその実装をしたいときってどうやればいいの?
できればその際のモジュール宣言とかも教えてください。
0974デフォルトの名無しさん
2007/10/05(金) 05:22:490975デフォルトの名無しさん
2007/10/05(金) 07:02:40使いやすいIDEがほしい。
0976デフォルトの名無しさん
2007/10/05(金) 07:13:59まじで愛用してるんだが、バージョンアップしてくれないかなぁ・・・
0977デフォルトの名無しさん
2007/10/05(金) 07:48:15VSじゃないけど、
Code Blocks、Dの設定回りがごちゃごちゃしてるけど、そこさえ終えれば結構快適
0978デフォルトの名無しさん
2007/10/05(金) 13:16:21import std.stdio;
void main()
{
string str = "hoge";
writefln("%s", str);
}
# dmd hoge
# ./hoge
Error: std.format formatArg
これは2.003でも使っとけって事なのか?
0979デフォルトの名無しさん
2007/10/05(金) 16:33:19D:\>type d.d
import std.stdio;
void main() {
string str = "hoge";
writefln("%s", str);
}
D:\>dmd -run d
hoge
D:\>dmd -v
Digital Mars D Compiler v2.004
Copyright (c) 1999-2007 by Digital Mars written by Walter Bright
Documentation: http://www.digitalmars.com/d/index.html
0980デフォルトの名無しさん
2007/10/05(金) 16:34:09Windowsなら通るぜ
0981デフォルトの名無しさん
2007/10/05(金) 17:33:59リアルタイムに赤線引いてくれるエディタまだー?
文字列mixinの中身まで面倒見てくれるIDEまだー?
0982デフォルトの名無しさん
2007/10/05(金) 17:52:52そろそろでかいのがきそうじゃないか
0983デフォルトの名無しさん
2007/10/05(金) 18:09:260984デフォルトの名無しさん
2007/10/05(金) 18:09:350985デフォルトの名無しさん
2007/10/05(金) 18:48:360986デフォルトの名無しさん
2007/10/05(金) 18:52:540987デフォルトの名無しさん
2007/10/05(金) 18:53:360988デフォルトの名無しさん
2007/10/05(金) 19:39:43こういう奴がいるからD駄目駄目なんだよ
Visual Dまだー?
リアルタイムに赤線引いてくれるエディタまだー?
文字列mixinの中身まで面倒見てくれるIDEまだー?
0989デフォルトの名無しさん
2007/10/05(金) 20:08:50俺もIDEマダー?派だな
DWTでポトペタ開発できるようになったらルンルン気分で書き捨てアプリ書くんだけどなぁ
>>990
次スレよろ
0990デフォルトの名無しさん
2007/10/05(金) 20:13:590991デフォルトの名無しさん
2007/10/05(金) 20:20:18http://pc11.2ch.net/test/read.cgi/tech/1191582990/
なんとなく>>1に "D Programming Language" 入れといた。
0992デフォルトの名無しさん
2007/10/05(金) 21:08:130993デフォルトの名無しさん
2007/10/05(金) 21:19:580994デフォルトの名無しさん
2007/10/05(金) 21:55:41込み入った開発はしてないからまだ良いけど、統合IDEはほしいねぇ。
0995デフォルトの名無しさん
2007/10/05(金) 22:03:24コンパイル時に無限ループでコンパイラが落ちたりするとか聞いたっけ。
IDE作るときに問題になったりしなかろうか。
あと亀。
>>930
サーセン、やっぱり関数型言語のひとつくらい覚えておくべきっすよね・・。
ていうか、関数型言語てそんなにいいもんでしょか。
どなたか埋めがてらに、その良さを力説してもらえないでしょか。
0996デフォルトの名無しさん
2007/10/06(土) 00:33:01Lispの良いところは文法が簡単なことじゃないかな!
Cとかと違って!
0997デフォルトの名無しさん
2007/10/06(土) 02:36:39文法が簡単過ぎる分関数名でだまされたときの痛みはひでぇんだよな〜。(とずいぶん昔の自分のコードにだまされた俺様)
0998デフォルトの名無しさん
2007/10/06(土) 02:39:54関数型言語といってもいろいろあるから一概には言えないけど、Haskellを触ってみた感想としては、
<長所>
・共通の処理を関数でくくり出すことが、的確にできる。プログラムをぶった切ってやったって感じで結構気持ちがいい。
・処理の流れをデータに落とし込んで処理することができる。例えば、手続き型言語で乱数を扱うときはそのつど関数を呼ぶのに対して、Haskellでは乱数の無限リストを生成したりする。これの何がうれしいのかというと、複数の乱数をいじくるときに、
手続き型言語だと制御構文を使って無理やり目的のものを作らなきゃいけないのに対して、Haskellだとリストを扱う関数が使える。制御構文は使い回しがきかないから、毎回自力で書かないといけないが、リストを扱う関数は使い回しが効くから楽。
<短所>
・オブジェクトのようなもの(入れ子になったレコードを書き換え可能データとして保持したりとか)を扱うのがかなりめんどくさい。
・ちょっと遅い
総論としては、関数型言語が手続き型言語に比べて優れているかは、微妙な感じ。
関数型言語も手続き型言語もそれぞれに長所、短所があって、どちらが優れているかは、使う人が言語機能の何を重視するかで決まる気がする。
結局俺は、実行速度が要求されるアプリを作ることが多いのでDに戻ってきた。
0999デフォルトの名無しさん
2007/10/06(土) 02:44:51(for (i 0 10) (print i))
って書きたいなって思ってマクロでforが簡単に作れたときは感動したな
遠い昔のことだが
1000デフォルトの名無しさん
2007/10/06(土) 03:00:1210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。