2006-08-01から1ヶ月間の記事一覧

可変長テンプレート関数

id:kurimuraさんのところより。 T[] array(T)(T a,T []dgs...){ return a ~ dgs; }ほえーすごいですねー…ってあれ?コンパイラ通らなくてD形式の型安全な関数諦めた記憶が…なんでだー。

Ruby in D

演算子オーバーロードを駆使してRubyっぽくかけるようにしよう!というテーマ。酷い。 import std.c.stdio; struct Each(T){ T[] ary_; Each_!(T) opOr(out T t){ Each_!(T) e; e.ary_ = ary_; e.ptr_ = &t; return e; } } struct Each_(T){ T* ptr_; T[] ar…

if書き直し

あんまりひどいので書き直した… struct if_set{ bool delegate() cond_; void delegate()[] stats_; } struct if__{ bool delegate() temp_; if_set[] sets_; if__ then_(void delegate()[] stats ...){ if_set set; set.cond_ = temp_; set.stats_ = stats;…

delegateの不思議

void hoge(void delegate() dg){ int delegate() dd = cast(int delegate())dg; TypeInfo ti = typeid(typeof(dg)); TypeInfo tt = typeid(typeof(dd)); if (ti == tt){ printf("hoge\n"); } if (ti == typeid(int delegate())){ printf("hige\n"); } if (tt…

値を返すifを書きたい!

満足のいく形で書けませんでした。 例えばこんな風な場合、 if_(condition()).then_( statement1(), statement2(), statement3() );then_()はstatement3()の型が知りたいわけです。 普通はここで関数テンプレートを使うわけですが、構造体やクラスのメンバ関…

forを作ろう!

果てしなく楽しくない上に動かないよ! import std.c.stdio; struct for_{ static for_init opCall(void delegate()[] init ...){ for_init f; f.init_ = init; return f; } } struct for_init{ void delegate()[] init_; for_test opCall(bool delegate() t…

ifを作ろう!

楽しそうなタイトルです。タイトルだけっぽいです。 import std.c.stdio; struct if_{ bool delegate() cond_; void delegate()[] true_stats_; void delegate()[] false_stats_; bool delegate()[] elsif_conds_; void delegate()[][] elsif_stats_; static…

forを作ろう!その2

こっちのほうが素敵ですね。 import std.c.stdio; for__!(T) for_(T)(out T t){ for__!(T) f; f.ptr_ = &t; return f; } struct for__(T){ T* ptr_; T[] ary_; for__!(T) in_(T[] ary ...){ ary_ = ary; return *this; } void opCall(void delegate()[] stat…

遅延評価

生きてます。 0.165は遅延評価がしやすくなったよ!という感じらしい。適当に書いてみる。 import std.c.stdio; void main(){ loop(5, printf("hoge")); } void loop(int l, void delegate() dg){ for (int i = 0; i < l; i++){ dg(); } }hogehogehogehogeho…

近況

夏らしく遊んだりしていました。 あと某SLGもどきにどっぷりとか。あまりにはまりすぎて、移動範囲だの何だのヘボアルゴリズムばかり書いてました… 益々使えない子っぷりに磨きがかかってきたところで、そろそろ普通の女の子、もとい真人間に戻ります!