トップ «前の日記(2004-08-25 (Wed)) 最新 次の日記(2004-08-28 (Sat))» 編集   RSS 1.0 FEED  

Journal InTime


2004-08-27 (Fri) [長年日記]

_ oka326さんのツッコミ

Satherで書いているかと思いきやC#だったんで意外といえば意外。でもその方がいいですね。Code inclusionなんぞいらんので、Satherを断ち切ってどんどんいい言語に仕上げて言ってください。.NETとの親和性の高さに期待してます:-)

[Journal InTime - tdiarytimes-flashstyle.rb , monoのgenericsとrelfection API , monoのJITコンパイラが生成したx86コードを読む , babelより引用]

ありがとうございます。

C#なのは、単純にその方が実装が楽だったからです(言語じゃなくてライブラリの機能的に、ですが)。

code inclusionにはいいところもあって、たとえば、SAMEがサブクラスに 展開されるのは結構うれしいですね。

とかいいつつ、単一継承 + delegationの言語的なサポートとかにしちゃうかもしれないですけど。

Tags: babel

_ parameterized type はじめの一歩

svnのheadで 以下のコードをコンパイルできるようになった。

class VALUE_HOLDER{T} is
  attr value: T;

  create(value: T): SAME is
    res ::= new;
    res.value := value;
    return res;
  end;

  get: T is
    return value;
  end;

  set(value: T) is
    self.value := value;
  end;
end;

class MAIN is
  main is
    x: VALUE_HOLDER{STR} := #VALUE_HOLDER{STR}("foo");
    #OUT + x.get + "\n";
    x.set("bar");
    #OUT + x.get + "\n";
  end
end

ここからが大変そうだけど。

Tags: babel

_ C# 2.0の匿名メソッド

C# 2.0の匿名メソッドって

addButton.Click += delegate {
    listBox.Items.Add(textBox.Text);
};

みたいに書けるんだ (と今更C# 2.0 Specificationを読んで知った)。

てっきり、

addButton.Click += new EventHandler(sender, e) {
  listBox.Items.Add(textBox.Text);
};

としか書けないと思いこんでいた (C# プログラミング言語の将来の機能という文書のせいだ)。

名前を指定しなくていいだけじゃなくて、使わない時はパラメタを省略してもいいらしい。*1

Tags: 言語

*1  ただし、outパラメタは省略できないし、省略する時は全部省略しないといけないようだ。