D言語

Tangoが0.99.9になったらしい

次のバージョンが0.100.0になるかどうかは今後に期待するとして http://www.dsource.org/projects/tango/changeset/5298 ゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴ…

D言語基礎文法最速マスター

注意! ふるいので書き直しました.https://gist.github.com/2470712 にある新しい方をごらんください! 以降古い版 他の言語をある程度知っている人はこれを読めばD言語の基礎をマスターでき,D言語の氷山の一角くらいは知ることができると思います.対象バ…

D言語とPerlとC++にしかできないような気がするアノ機能

http://d.hatena.ne.jp/qnighy/20100124/1264342447 import std.stdio, std.c.stdlib, std.c.time; void main() { uint a, b; srand(time(null)); foreach (i ; 0..1000) { (rand & 16 ? a : b)++; } writeln(a, ", ", b); }

D2本のための章立てを考える

今更だけど難しさを知る.TDPLも考慮して,初期段階だけどこんな感じで D言語について データ型,式,文 配列,連想配列 関数,デリゲート クラス そのほかの型 型システム テンプレート エラー処理 契約プログラミング その他の機能 リソース管理 Phobos 並…

std.variantをimportするだけでコンパイルエラー

要素が構造体の連想配列が作れない? 原因はstd.variantが内部で使っているAssociativeArrayと既存のAssociativeArrayとのコンフリクトが原因と思われる(renameすれば起きない).見つかったのは結構最近のようだけど,Donが既にパッチを書いてくれているで,…

CT Brainf*ck

ふと思い立ったので書いてみた.D言語のCTFEは優秀なのですっきり書けたのは書けたけど,何かちょっと嵌まった.以下嵌まった所. 配列のlength arr ~= 0; // OK arr.length = 10; // Error : cannot be evaluated at compile time 時間があったらrt以下を読…

D言語でErlangベースのメッセージパッシングの受信側

ってどうやるの?と.Erlangがあのシンタックスで便利なのは,動的型付けとパターンマッチのコンビネーションだからだと勝手に思っているのだけど(プログラミングErlang買うべきか?).Erlangの場合,spawnとか使ってプロセス生成時に渡す関数にはこれと言っ…

STM

並行処理するための技術の一つだけど,何か面白そう.今のところ使われてるのはHaskellとClojureくらいしか知らないのだけど,いろいろやりようがあるっぽい.D言語はメッセージパッシングの方でConcurrency APIは進んでるけど,これならライブラリレベルで…

Happy new year!!

なんか皆さん書いてるので,プログラム関係くらいは書いておこうかと.2009年のまとめをどうするかは後で考える(どう考えても書かないフラグ). D言語 そろそろアウトプットしたい所.いくつか書いて見たいライブラリもあるので,D2でガシガシ行きたい. な…

夏コミ?

なんか同人誌出すことになってるんだがどうすりゃいいんだ?同人誌で日本語訳とか聞いたことないぞ.TDPLはいいとして,そもそもD2の仕様が凍結されているのかさえ分からんのだけど…

アトミックな数値

Java並行処理読んでて出てきたアトミックなクラス(java.util.concurrent.atomic.*).最初Vectorみたいに全部synchronizedがついてるのかと思ってたら勿論そんなわけじゃなくて,CPU命令を使ってアトミックに操作してるらしい(Atomicってついてるんだから当た…

std.signals

http://www.digitalmars.com/d/2.0/phobos/std_signals.html Phobosだとどうやってるのか見てみたら,かなりシンプルだった.オブジェクトかメンバ関数じゃないと駄目なのは,削除された時にスロットを自動で削除するためにrt_*DisposeEventで感知してるから…

Boost勉強会

http://atnd.org/events/1839 LT辺りで発表したかったけども,参加が難しくUstで見てた.どれも濃い話だったけども,shared_ptrの話はそんなの意識せずに過去使ってしまってすいません,というくらい素晴らしい話だったので,C++erは是非見ましょう. D言語…

opDispatch…

dmd 2.037からopDispatchが入って色々とやりやすくはなったのだけど,一つ出来ないことがあった. foo.name = "foo bar"; foo.age = 20; みたいなのが出来ない気がする.opDispatchはtemplateメソッドだからシンタックスシュガーも使えないみたいだし.上手…

Phobosのアンドキュメントなライブラリ

atomics bigint dataparse loader perf stdarg deprecatedなものとか*baseなものはいいとして,こういうのってどういう扱いなんだろ?

連想配列置き換えプロジェクト

http://www.dsource.org/projects/aa これ見ると今の連想配列は挿入が遅く検索は速い実装のようだ.PyDictはBeautiful Codeにも乗ってる色々チューニングされたやつだけど,RandAAに負けてしまっている(それっぽく移植しただけ,みたいに書いてたからそのせ…

D言語でのプロパティ

今日Twitterでのこのつぶやきから始まってこうなったので,とりあえずinitに関してだけ書いておく. D言語のプロパティ int.init とすればその型の初期値が取れるやつ.C#のdefaultは予約語らしいけど,D言語のはプロパティなのでそうじゃないというわけです…

Plan9とdmd

某所で変態達が崇め奉っているPlan9でdmd動くと色々面白そうだけど知識が全然足りない.これも今後の課題に入れておこう.優先順位は最後で(オ 追記 最近gdcの開発が再開されたので,最悪そっちの方がいいのかもと思えるようになってきた.gdc自体は最新版じ…

D言語のmodule

C++だと namespace std { void foo() {} } とかやると既存の名前空間に関数を定義できるんだけど,D言語だとどうすればいいのやら?Javaだと既存のfoo.bar.Bazでもロードされる前に挿入すれば上のようなことが出来るらしい. D言語だとmoduleがパッケージと…

コンパイルタイムリフレクション

std.range & std.algorithmについてはまた後でまとめるとして,特性に関して. module bar; struct Bar { private bool bar; } とまぁ用意して__traitsを使おうとすると import bar; void main() { Bar bar; __traits(getMember, bar, "bar"); //-> Error: s…

PhobosでJSON

std.json and std.uni WalterもAndreiも認めてるようなので,多分次のバージョンでstd.jsonが使えるようになるんじゃないかと.ちゃんと日本語とかも認識するので普通に使えそう.parseValueが再帰だけどまぁ問題になるほどネストが深くなることもないかな.…

ユーザ定義のアノテーション

まだ先の話だけど,これが出来るようになるとリフレクションがないD言語でも普通のテスティングフレームワークとかが書ける気がする.今でも while (clazz.base !is null) { clazz = clazz.base; if (clazz is Foo.classinfo) { ... } } とかやって継承を辿…

dref

http://github.com/kazuho/cppref こんなのが出来たらしいのでD言語版作ろうと思った(dmdならDLすると一緒にドキュメントもついてくるし指定先としては困らない).一番の問題はこれみたいにw3mを使うか使わないかだけど,Windowsにもw3mはあるし問題ないか.…

プロパティの方向性

int foo() @property { return 0; } とりあえずこのコードがコンパイル自体は通るようになってる.Walter曰く「It's only half-implemented. Don't use it yet :-(」とのことなので,今のD言語ではまだ使えない(後多分@annotationは前に来るはず).ただ見れ…

ループを使わずに1から10までの総和を表示するプログラム

http://d.hatena.ne.jp/zecl/20091002/p2 http://valvallow.blogspot.com/2009/10/110.html http://d.hatena.ne.jp/shunsuk/20091002/1254486763流行っているようなのでD言語で. import std.stdio, std.range, std.algorithm; void main() { writeln(reduce…

dmd 2.032

http://www.digitalmars.com/d/2.0/changelog.html#new2_032 CTFE関係が強化された様子で,これでますますコンパイルタイムにほげほげ出来る.後結構な数のバグフィックスがされてて,これも何より.でも真のプロパティとかT[new]のようなスライス関係とかも…

新しい発見

for (if (true) return;;) {} が動くのは知ってたけど,今日digitalmarsのML眺めてたら for ({} false; 42) {} というソースが紹介されてた.確かに空分だけどさ…

D2の行方

Developing a plan for D2.0 DonによるD2がやるべきプラン.やっぱりPhobos I/Oは新しくなるみたいだ.他のモジュール共々ここに来て挿げ替えるとか,今までのPhobosは一体何だったんだと思いたくなるような感じw "contract inheritance"が未実装になってる…

dmd 2.031

final switch 定数のためのswitchみたいなものなんだけど,通常のswitchでもcaseが全て定数(試したのは全てenum)だとfinal switchと等価になるようだ.ということで,final switchはそういうことを明示するために使える,ということになるのかな? Case Rang…

More D language in your life!

The Case for Dの和訳 id:Dubheadの方と共同で和訳を行っていて,ついに6ページ全て完了しました.最初偶数全部やるつもりだったのだけど,翻訳速度が遅く2,4だけになってしまったという(もっと英語の鍛錬をせねば).現状D言語でこれを越える導入記事はない…