D

D BOF

で D BOF で話してきました。あとでまとめてあがるみたいだけどとりあえずどうでもいいスライドはこんな感じ。http://www.slideshare.net/shinh/dreflectionhttp://docs.google.com/Presentation?id=dhf5wwff_79g93d9xccまぁなんか色々グダグダだったのはホ…

Haskell Hackathon

とりあえず D BOF は後で。http://shinh.skr.jp/koneta/dhc.tgz眠いなーと思いつつ D BOF の後で行った。たぶん2時くらいについた。なんかみんな飯喰ってたのでだべる。チャットから時間を起こそう。とりあえずパーサとかどうでもいいので構文木を喰わせる実…

member functions tracer

なんか ModuleInfo とか ClassInfo あたりまでは reflection できてるのなー、ということで これ をちゃんと実装してみた。http://shinh.skr.jp/d/tracer.tgz % cat example.d import tracer; class C { void f() { g(); } void g() { } } void main() { ini…

D/SDL on MacOSX

んで次は D のゲームのコンパイルしてたわけですな。http://shinh.skr.jp/osxbin/D のコンパイラは gdcmac がすばらしいのでありがたく使う。http://gdcmac.sourceforge.net/まずは普通に D の非互換によるエラーを潰す。そんなにたいした量なかった。リンク…

myassert.d

このへん見て。http://d.shinh.org/html/toy/shinh/myassert.html mixin(myassert!("x > 0", "hoge")); mixin(myassert!("x < 0", "hage")); 許容範囲なような、範囲外なような…このパッチがいらないような、微妙なような…

backtrace 1.0

http://shinh.skr.jp/d/1.0 出たみたいなので作っておきました。

D 言語で CGI を書こう!

http://shinh.org/clock/clock.dなんか適当に CGI 書いてみました。 D 言語はダメコチャンな言語なので入力受け取れないので時計くらいしか書けないなぁと思いました。しかも拡張子 CGI だと動かないんですよねえ。 html なら動くんだけど。追記: あ、えーと…

デフォルト引数の __LINE__, __FILE__

前少し話してた話なのですが。プログラミング言語 D - Cプリプロセッサ vs D のマクロの項目 の 8 に C の assert マクロ vs 組み込み assert みたいな項があるんですが、これって assert 以外の名前でユーザ側で作りたい場合に、呼び出し側で毎度 __LINE__ …

TCC をリンカに

Linux の DMD で作業してるとすぐ気付くんですが、コンパイルは速いのでボトルネックは GCC というか GNU ld だったりするんです。小さいファイルの場合特に。んでていうか ld ってなんかやけに遅いよねぇとか思ってたのでリンカ書いてみる…とか思った時代が…

まともな memfun

で、 D はメンバ関数へのポインタが本当にメンバ関数へのポインタなので使えないわけです。以前書いた こんないいかげんなのだと多態できない(つまりsumimさんのメンタルモデルが裏切られない)わけですが。なんかいつ書いたかわからんけど多態できるバージョ…

D monooki

http://pc8.2ch.net/test/read.cgi/tech/1165621441/21まぁこんなところがあればまぁいいような。http://d.shinh.org/html/toy/shinh/struct_init.htmlというわけでなんか D のソースコード置き場を作りました。 SVN でコミットしたら上記みたいな html が自…

終わらないうたをうたおう

このファイルコンパイルすると、コンパイルが終わりません!コンパイラが無限ループするっていったいぜんたい。http://shinh.skr.jp/tmp/functional_endless.dそれはともかく。http://d.hatena.ne.jp/niha/20061209#1165682303謎を色々追うにはさんに感動し…

FFI for DMD functions

D 言語で FFI をやるライブラリを作りました。これでたぶん phobos 呼べまくりなので適当に自作言語でも作ってください。うそですもうちょいまともな reflection が欲しいですね。まぁそれも作る。http://shinh.skr.jp/d/ffi.tgzTODO: new をなんとかする de…

compile time quine in D

http://shinh.skr.jp/d/quine.dなんか pragma msg は計算結果が使えないという勘違いをしていたのですが、なんか色々やってみたらできました。もうちょい短くしたいところですね。 template c(int v){const char[] c=""~cast(char)v;} const char[] x="pragm…

typesafe printf in D

http://www.kmonos.net/wlog/68.html#_2331061204最後やりたかったのは本当はこんな感じですか! import std.stdio; import std.typetuple; template FormatCheckerType(char[] orig, char[] fmt, T...) { static if (fmt.length == 0) { static assert(fals…

DRef 0.1.0

D でも ReFe みたいなものが欲しくなったので作りました。つまり phobos のドキュメントをコマンドラインでひけます。 D で書くのもめんどそうだったので Ruby で書いてありますので要 Ruby 。http://shinh.skr.jp/d/dref.zip適当に dref_ja.db と dref.rb …

alias 引数の template

最近 D を追い切れてなかったのでどっかで騒いでたかもしれませんが、私に見える範囲では(要は私のアンテナにある程度)、 DMD 0.173 で導入された、「テンプレートのalias引数として、ローカル変数やネスト関数が指定可能になりました。」って変更はそんなに…

FPUのフラグをいじろう

あまりよくわかってませんが、浮動小数点数の規格であるところの IEEE754 には、無効操作ってものが定義されてるようです。例えば Inf - Inf だとか NaN > 0 だとか sqrt(-1) だとかですね。で、 x87 の FPU ではなんか、これはたいていの場合ほっとくと QNa…

D の delegate について

わけわか、と書かれてしまったよ、ということについて、難しいというより説明が全くなされていないからだろうと思って、少し説明を。 delegate は 2 つのポインタからなりたっています。最初の要素にはスタックフレームへのポインタが、2つ目の要素には関数…

True Closures

http://www.kmonos.net/wlog/64.html#_2340060823おお面白い。 24 は void** fa0; asm { mov fa0, EBP; }; void** fa1 = cast(void**)*fa0; void** fa2 = cast(void**)*fa1; *dg = sp[0 .. (*dg-sp+(cast(byte*)fa2-cast(byte*)fa1))].dup.ptr + (*dg-sp);こ…

implicit conversion of expressions to delegates

式を勝手に delegate にしてくれる機能を追加ということで、なかなかみなさん楽しんでおられるようで。最初 statement は delegate にならんしなぁ、とか思ってたんですが、http://pc8.2ch.net/test/read.cgi/tech/1146656260/582の do-while を見て、要する…

SDL.d

http://shinh.skr.jp/d/SDL.zipSDL を D から使うためのポーティングですが、主に D の import ルールが変化したことにあわせて更新しました。更新点は以下の通り。 SDL.d で他ファイルを全て import するように かつ、 public import するように test 2つを…

Collatz 予想を D _インタプリタ_ で

例のごとくコンパイルエラーで結果出力ですが、なるべくすなおーに書いてみました。 D のコンパイル時プログラミングはなかなか悪くないとわかるのではないでしょうか。 template g(int n) { const int result = n; static if (n == 1) { const int step = 1…

たらいべんち

たらいまわしが流行って(いつの話だ)memoがどうとかは考えず、素直な実装でコンパイル中に計算してしまって、その速度を比較してみます。D版。 template tarai(int x, int y, int z) { static if (x <= y) { enum { v = y }; } else { enum { v = tarai!(tar…

bind.d

Boost.bind の D 版を作ってみました。めんどいだけであまり実装とか面白くもなかったというか、メソッドテンプレートが無いので opCall(...) を実行時に解決するというダサい解になっています。一応型チェックはそれなりにしてあるはず。http://shinh.skr.j…

データとかの分離とかのアルゴリズムとかの

alias template で以下のように書く方がステキでした。 template getDX(alias A) { static if (is (typeof(A()))) alias typeof(A()) rettype; else alias typeof(A) rettype; rettype getMemberDX() { return A; } } class Meteorite{ float x; float y; fl…

パスカルの三角形

が流行っているらしいのですいつの話だ。D で書きました。残念ながらコンパイルが通りませんが結果オーライ。改行とかできないのでぜんぜん三角形になりません。 i@u ~/test/d> dmd pascal.d pascal.d(55): static assert (0) is false, "[ 1 ] [ 1 1 ] [ 1 …

データとかアルゴリズムとかポリシーとかの分離とか

最近のhttp://d.hatena.ne.jp/w_o/20060613#p2のあたりは私も色々考えたことがあるのですが、おっしゃってる通り C++ だと template の限界が来るのと、あと、コンパイルおっせー、っていう理由でまぁ色々 GameObj から継承したらいいじゃんとかそういう日和…

convolution.d

id:rinset さんの D で STL ネタなんかを見てて触発されて、今の D って関数プログラミングサポートを C++ 以上にできる部分もあるんでないかなぁ…とか思って Haskell の標準ライブラリを実装していってみました。ふと関数合成で止まったんですが、試行錯誤…

SDL_freetype.d

SDL_freetype の D ポーティングを作りました。 .dll と OMF のインポートライブラリも付属させておきました。http://shinh.skr.jp/d/porting.htmlついでに、というかこっちの方がめんどかったわけですが SDL_freetype を autotoolize しておきました。今後…

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h