D言語 Part24
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2010/01/26(火) 00:06:57■前スレ
http://pc12.2ch.net/test/read.cgi/tech/1253443684/
■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)
■コンパイラ
http://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
http://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
http://www.dsource.org/projects/ldc (LDC, バックエンドにLLVM)
■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF)
ttp://dsource.org/ (dsource)
ttp://tinyurl.com/candcpp2d2 (C/C++に疲れた人のD言語2.0)
ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語)
ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか)
ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座)
ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画)
ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games)
ttp://dusers.dip.jp (D言語友の会)
ttp://www.wish.sakura.ne.jp/desuno/game/Drawing (PrincessDrawing! D言語で作られた横スクロールSTG)
>>2へ続く
0809デフォルトの名無しさん
2010/07/14(水) 00:59:03int func(int x) { return x*2; }
alias compose!(func,func) twice;
void main()
{
assert( twice(1)==4 );
}
こんな感じだろうか?>>808
0810デフォルトの名無しさん
2010/07/14(水) 01:34:30ありがとうございます.しかし、>>808の関数も、
int func(int x) { return x*2; }
void main() {
assert(twice(&func)(1) == 4);
}
は、うまく動きますが、
auto f = twice(&twice!(int));
とすると、>>808のようにエラーがでてしまいます.
0811デフォルトの名無しさん
2010/07/14(水) 01:45:01[0, 1, 2, 3][0..length];// Error: ScopeDsymbol using 'length' inside [ ] is deprecated, use '$' instead
なら変数のほうを見てくれよ・・・
0812デフォルトの名無しさん
2010/07/14(水) 03:19:36>>809 の compose は template なのでそういうのは無理でしょうね。
>>810 のように書くとしたら、
T delegate(T) twice(T)(T delegate(T) f){
return (T x){ return f(f(x)); };
}
void main(){
int func(int x) { return x*2; }
auto tf = twice(&func);
auto ttf = twice( twice(&func) );
assert( tf(1) == 4 );
assert( ttf(1) == 16 );
}
こんなのはいかがでしょうか?
func がデリゲートじゃないといけないのがヤルセないですが、これはそのうち改善されるらしいです。
ちなみに 809 で使った std.functional.compose でも、
alias compose!(func,func,func,func) ttf;
で関数4回適用できます。
0813806
2010/07/14(水) 09:16:17ありがとうございます.
auto f = twice(&twice!(int));
のエラーですが、 &twice!(int) の型が function なので、
import std.functional;
auto tt = twice(toDelegate(&twice!(int)));
とすれば、うまくいきました.
0814デフォルトの名無しさん
2010/07/14(水) 19:36:480815デフォルトの名無しさん
2010/07/14(水) 20:32:370816デフォルトの名無しさん
2010/07/14(水) 21:28:000817デフォルトの名無しさん
2010/07/14(水) 22:13:420818デフォルトの名無しさん
2010/07/14(水) 22:44:280819デフォルトの名無しさん
2010/07/14(水) 23:08:56語尾ははっきりと言いましょう
0820809
2010/07/15(木) 00:48:52半分以上寝てたからなんか話がずれてますね。ごめんなさい。
でも解決してよかった。
0821デフォルトの名無しさん
2010/07/15(木) 14:21:580822デフォルトの名無しさん
2010/07/16(金) 19:51:24これでネイティブ描画でDLLを同梱する必要が無くてライセンスがBSDなら完璧なんだけどな
0823デフォルトの名無しさん
2010/07/16(金) 21:51:500824デフォルトの名無しさん
2010/07/17(土) 00:14:29IDEとしてVisual Dが出て、
「やさしいD」、「Dの絵本」なんて本がでたら勝利コース
0825デフォルトの名無しさん
2010/07/17(土) 01:43:090826デフォルトの名無しさん
2010/07/17(土) 13:56:31D is better D..
0827デフォルトの名無しさん
2010/07/17(土) 14:11:000828デフォルトの名無しさん
2010/07/17(土) 15:14:34絶 対 に 出ねーから安心しな
D#なら出るかもしれんなw
0829デフォルトの名無しさん
2010/07/17(土) 17:20:27>仕様が完全に決まって、
この段階でももう無理
0830デフォルトの名無しさん
2010/07/17(土) 17:33:13ここが無理
0831デフォルトの名無しさん
2010/07/17(土) 20:30:06仕様が固まる前にVisual Dが出てしまっているからそのプロセスは既に無理
0832デフォルトの名無しさん
2010/07/17(土) 21:12:50Andrei Alexandrescu 著
0833デフォルトの名無しさん
2010/07/17(土) 23:44:440834デフォルトの名無しさん
2010/07/17(土) 23:49:410835デフォルトの名無しさん
2010/07/17(土) 23:53:40Andreiはコンパイラには精通してないから,その辺はWalterとかDonが書きそう
0836デフォルトの名無しさん
2010/07/19(月) 15:07:070837デフォルトの名無しさん
2010/07/19(月) 15:49:230838デフォルトの名無しさん
2010/07/19(月) 16:36:500839デフォルトの名無しさん
2010/07/19(月) 16:37:130840デフォルトの名無しさん
2010/07/19(月) 18:56:53p = &a[0];
で、アドレスを取得しようとすると、
参照が指してるアドレスじゃなくて、参照自体のアドレスが返ってくるのな。
0841デフォルトの名無しさん
2010/07/19(月) 19:24:59再現しなかった@dmd 2.047
int[] a = [1,2,3,4,5];
dout.writefln("&a = %s", &a);
foreach (i; 0..a.length)
dout.writefln("&a[%d] = %s", i, &a[i]);
&a = 12FE04
&a[0] = 924CE0
&a[1] = 924CE4
&a[2] = 924CE8
&a[3] = 924CEC
&a[4] = 924CF0
0842デフォルトの名無しさん
2010/07/19(月) 20:26:10ごめん、>>840は推測で書いちまった。
俺がちゃんと検証すればいいんだけどね...
本当は、
S[] a;
S*[] d;
//中略。
b[0] = &a[0];
と、やった上で、いろいろ処理をやったら、
b[0]の値は変わってないのに、
b[0] != &a[0];
になってるバグに遭遇して、なんでだろう?と、思って。
0843デフォルトの名無しさん
2010/07/19(月) 20:29:470844デフォルトの名無しさん
2010/07/20(火) 04:41:12aの長さを変えたりとかしてreallocationが起きたんじゃない?
0845デフォルトの名無しさん
2010/07/20(火) 06:36:450846デフォルトの名無しさん
2010/07/20(火) 07:10:48現状コピーGCじゃないという悲しい現実…
0847デフォルトの名無しさん
2010/07/20(火) 07:46:400848842
2010/07/20(火) 11:02:10そもそも俺は、動的配列をこんな構造だと勝手に思ってた。
a ⇒配列の先頭アドレスを指す。
a[x] ⇒配列の実データを指す。
でも実際は、a[x]が実データなのだろうか?
どっちにしても、いきなりデータの整合性が取れなくなるのは、気分悪い・・・
0849デフォルトの名無しさん
2010/07/20(火) 19:37:09struct {
size_t length;
int* ptr;
}
という構造だとどこかで見たな
0850デフォルトの名無しさん
2010/07/20(火) 19:37:25動的配列は配列の先頭要素のアドレスと、長さからなる構造体って考えると理解しやすいかも
a = [1,2,3];
b = a; (ここで、先頭要素のアドレスと長さがコピーされる)
b.length = 5;
とかやるとaの要素が置かれている領域とは別の領域が確保され、bはそっちのアドレスを指すことになる。
結果としてaとbは全く別の配列を指すことになる。
あと、長さ0の動的配列 == nullだから
a = [];
b = a;
とした場合、aとbは完全に独立な配列で、片方の変更はもう片方に伝播しない。
動的配列は参照型って言語仕様には書かれてるけど、これを素直に解釈すると混乱のもとだと思う。
0851デフォルトの名無しさん
2010/07/20(火) 19:45:11a[x]は実データなはずだけど。
それと、コピーGCが再配置したとしても、b[0]のアドレスも書き換えるのではなかろうか。
一番有り得そうなのは >>844 の意見じゃないかなぁ
in-placeな関数とかプロパティとか使ったりするとそうなるかもしれない
0852デフォルトの名無しさん
2010/07/21(水) 20:19:13ja.uncyclopedia.info/wiki/D%E8%A8%80%E8%AA%9E
0853デフォルトの名無しさん
2010/07/21(水) 20:40:09Lと名付けられた言語は複数あって、論理設計用のものからTCL/TKで作られたToy言語まで
どれも有名だよ?
0854デフォルトの名無しさん
2010/07/21(水) 21:19:28「ごきげんよう」
0855デフォルトの名無しさん
2010/07/22(木) 00:05:420856デフォルトの名無しさん
2010/07/22(木) 00:38:58ほとんど誰も知らないような言語を並べていくと
AからZまで全部あるはず
0857デフォルトの名無しさん
2010/07/22(木) 06:42:460858デフォルトの名無しさん
2010/07/22(木) 07:22:08天下のGoogleですらGOなんて名前を付けちゃうし
0859デフォルトの名無しさん
2010/07/22(木) 13:23:15エディタの名前とか見てると特にそう思う。
0860デフォルトの名無しさん
2010/07/22(木) 14:00:590861デフォルトの名無しさん
2010/07/22(木) 20:02:250862デフォルトの名無しさん
2010/07/22(木) 20:04:57A言語のHello, Worldは実に振るってるな
0863デフォルトの名無しさん
2010/07/23(金) 01:30:240864デフォルトの名無しさん
2010/07/23(金) 07:00:350865デフォルトの名無しさん
2010/07/23(金) 19:54:43こうだろ。
0866デフォルトの名無しさん
2010/07/23(金) 20:05:30これを応用すればhello worldの一つや二つ
0867デフォルトの名無しさん
2010/07/25(日) 15:05:350868デフォルトの名無しさん
2010/07/25(日) 17:33:470869デフォルトの名無しさん
2010/07/25(日) 19:48:360870デフォルトの名無しさん
2010/07/25(日) 20:30:110871デフォルトの名無しさん
2010/07/25(日) 21:57:360872デフォルトの名無しさん
2010/07/25(日) 22:57:460873デフォルトの名無しさん
2010/07/25(日) 23:33:47http://twitter.com/D_Programming/status/18467677902
0874デフォルトの名無しさん
2010/07/26(月) 06:57:19Walterも「64bit対応はそれほど難しくない」っぽいことをMLで話してたし順調っぽいね
0875デフォルトの名無しさん
2010/07/26(月) 12:40:170876デフォルトの名無しさん
2010/07/26(月) 15:01:1832bitアプリをそのままコンパイルしただけじゃメモリ空間が広くなるだけ?
0877デフォルトの名無しさん
2010/07/26(月) 19:23:000878デフォルトの名無しさん
2010/07/26(月) 22:17:54D言語は最初から64bit対応が考慮されてるだけだし、あとは実装するだけ。
dmdがんばれー
0879デフォルトの名無しさん
2010/07/26(月) 22:33:450880デフォルトの名無しさん
2010/07/26(月) 22:54:17realでも80bitだったよね?
0881デフォルトの名無しさん
2010/07/26(月) 23:05:380882デフォルトの名無しさん
2010/07/26(月) 23:06:240883デフォルトの名無しさん
2010/07/27(火) 06:02:390884デフォルトの名無しさん
2010/07/29(木) 22:03:100885デフォルトの名無しさん
2010/07/29(木) 22:11:330886デフォルトの名無しさん
2010/07/30(金) 18:43:17みんな恐い物を話す中で一人だけ黙っているものがいました。
Walter「おい、松ちゃん。恐いものはないのかい。」
松 「恐い! 恐いもんなんか何もないよ。」
Walter「CもC++もJavaも恐くないんかい。」
松 「そんなものは恐くないよ。・・・・」
しかし突然話すのを止めてしまった。
Walter「どうしたんだい。」
松 「恐いものを思い出しちゃった。」
Walter「それはなんだい。ぜひ教えてくれよ。」
松 「あ、新しいプログラミング言語が恐い。」
Walter「新しいプログラミング言語、そりゃどういう言語だい。」
松 「C++をベースにした言語なんだ。JavaやRubyやPythonのいいとこどりした言語なんだ。ああ思い出しただけで気持ち悪くなる。」
顔色がみるみるうちに悪くなってきた。
松「ああ、座ってられない。隣の部屋に布団をしいてくれ。」
床に入ると、とうとう毛布で顔をおおってしまいました。
これを見て、Walterは笑って、いたずらをすることにしました。
0887デフォルトの名無しさん
2010/07/30(金) 18:45:34それをネットで公開し、こっそり松ちゃんのPCにインストールし、気がつくのを待ちました。
Walter「ねえ。松ちゃん。起きなよ。もうお開きだよ。」
松 「わかったよ。起きるよ。でももう新しい言語のことは言わないでくれよ。」
Walter「わかったよ。もう話さないよ。」
大きな叫び声が聞こえた。
松「うわ、新しい言語だ。みょうな機能が一杯だ。」
となりの部屋のWalterは大満足。
松「おいWalter、どうしてこんなことをするんだよ。約束しただろう。D言語こわい。D言語恐い。」
大きな声をあげれば上げるほど、Walter大喜び。
松「うわ、連想配列だ。恐い、恐い。」
「うわ、遅延評価だ。恐い、恐い。」
「うわ、テンプレート恐い。べんり・・。こわい・・。」
様子のおかしいのに気がついて部屋の中を覗いてみました。
Walter「うれしそうだぜ。コンパイルしてるぜ。こりゃだまされた。ねえ、松ちゃん、一体何が恐いんだい。」
松「クロージャが恐い。」
0888デフォルトの名無しさん
2010/07/30(金) 19:26:350889デフォルトの名無しさん
2010/07/30(金) 20:01:411.0とか2.0とかよくわからん。
普段Perl使ってて、時々Cとかに手を出すんだが、正規表現とかって充実してる?
0890デフォルトの名無しさん
2010/07/30(金) 20:24:59と仕様には書いてある
0891デフォルトの名無しさん
2010/07/30(金) 20:28:24機能は前者の方が充実してるような感じ
俺がちょっと使うくらいなら便利なんだけどPerlでバリバリやってるような人から見るとどうなんだろ
0892デフォルトの名無しさん
2010/07/30(金) 21:10:21ふむ。新しく何かとってきて組み替る必要がない 旨が仕様に書いてある のはよさそう。
でも
>モジュールが混在してる
ってよく分からんwww開発途上なのか?
0893デフォルトの名無しさん
2010/07/30(金) 21:26:49↓
Dがバージョン1になったよ
↓
まだまだ色々拡張したい、とりあえず安定版をバージョン1にして
バージョン2に色々拡張していくよ
↓
Phobos古くなってきたしTangoライブラリとして再設計するよ
↓
Phobos捨てがたいし、混ぜちゃえ☆
(tangobosの誕生)
↓
D言語のバージョン1とバージョン2、ライブラリのPhobosとTangoがごっちゃごちゃ ← 今ここ
0894デフォルトの名無しさん
2010/07/30(金) 21:29:580895デフォルトの名無しさん
2010/07/30(金) 21:58:03GUIライブラリに到ってはもっと混乱してる上にプロジェクトの大半が崩壊してるが正規表現とは関係ないから安心(ry
0896デフォルトの名無しさん
2010/07/30(金) 22:03:53逆になんでD使ってんだよwww
0897デフォルトの名無しさん
2010/07/30(金) 22:35:210898デフォルトの名無しさん
2010/07/30(金) 22:39:54しかし、遅いならともかく早すぎて追いつけないって……
0899デフォルトの名無しさん
2010/07/30(金) 22:47:25だからNは少しだけ
中途半端なのです
0900デフォルトの名無しさん
2010/07/30(金) 23:54:330901デフォルトの名無しさん
2010/07/31(土) 00:17:00マクロとか無くてすっきりかっこいい。オブジェクト指向に書ける。
これでいいじゃんD言語。
0902デフォルトの名無しさん
2010/07/31(土) 00:58:020903デフォルトの名無しさん
2010/07/31(土) 02:21:240904デフォルトの名無しさん
2010/07/31(土) 02:47:02確かに文字列とかはCやC++よりちょっと扱いやすい印象かもしれない。
0905デフォルトの名無しさん
2010/07/31(土) 02:51:12filename = sub(file,"\\","");
std.regexp.RegExpException: no character past '\'
これってなんで例外でるんだ?
0906デフォルトの名無しさん
2010/07/31(土) 03:42:22"\\\\"
r"\\"
`\\`
お好きなのどーぞ
0907デフォルトの名無しさん
2010/07/31(土) 08:34:55Tangoは消える運命だしPhobosを強化してD2が今のコミュニティの方向
後Tangoが出たのってD2の前じゃないっけ?
>>903
並行GCがいつか来るよ!
0908デフォルトの名無しさん
2010/07/31(土) 08:52:01ただのライブラリなら神だったのに
レス数が900を超えています。1000を超えると表示できなくなるよ。