Create  Edit  Diff  FrontPage  Index  Search  Changes  Login

The Backyard - DynamicLanguageRuntime Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

!! DLRについてのJim Huguninのログのメモ
!!! The One True Object (Part 1) − DLRの型システムについて
[[単一のオブジェクト型|http://blogs.msdn.com/hugunin/archive/2007/05/02/the-one-true-object-part-1.aspx]]

!!!!ラッパ

Jython作る時はラッパアプローチを作ったが、いくつか問題点がある。

Javaのメソッドを呼ぶ時、ラッパーを与えるべきか、アンラップした元のオブジェクトを与えるべきか?

たとえばIdentityの問題がある。

いずれにしても、単一言語なら、それでも良いかもしれないが、複数の言語のサポートには、特化したラッパ型の導入はいまいちだ。

!!!!型システムのメタデータ

Cで言語を作った人なら皆知ってるが、メタデータのために特殊なラッパが必要となる。

でも、CLRにはあらかじめメタデータがあるんだから、それを利用できる。

DLRでは、ラッパ抜きにCLRの型を利用する。

!!! The One True Object (Part 2) − DLRの型システムについて
[[単一のオブジェクト型|http://blogs.msdn.com/hugunin/archive/2007/05/04/the-one-true-object-part-2.aspx]]

DLRの型システムのコアとなるのは、メッセージパッシングだ。

型システムはサポートしたすべての言語で異なる。でも、すべてOOだ。つまりメッセージパッシングで実行される。

Microsoft.Scripting.Actionsを見よ。

!!!!アイディア

共通のコモンなメソッドの実装

!!!! CLR型

既存のアセンブリに互換な、型拡張をどう実現するか? LINQ(C#3.0)の拡張メソッドだ。

!!!!IDynamicObject

動的言語固有のオブジェクトはIDynamicObjectを実装する。

IDynamicObjectのデフォルト実装があると、ちょろい動的言語の作成には有効だと思うのでそのうち提供するかも。でも、今じゃない。

名前は付け間違えたので、とりあえずIActionableを見ること。そのうち直す。

!!!DLR Trees (Part 1)
[[DLRの木構造|http://blogs.msdn.com/hugunin/archive/2007/05/15/dlr-trees-part-1.aspx]]