DynamicLanguageRuntime
DLRについてのJim Huguninのログのメモ
The One True Object (Part 1) − DLRの型システムについて
ラッパ
Jython作る時はラッパアプローチを作ったが、いくつか問題点がある。
Javaのメソッドを呼ぶ時、ラッパーを与えるべきか、アンラップした元のオブジェクトを与えるべきか?
たとえばIdentityの問題がある。
いずれにしても、単一言語なら、それでも良いかもしれないが、複数の言語のサポートには、特化したラッパ型の導入はいまいちだ。
型システムのメタデータ
Cで言語を作った人なら皆知ってるが、メタデータのために特殊なラッパが必要となる。
でも、CLRにはあらかじめメタデータがあるんだから、それを利用できる。
DLRでは、ラッパ抜きにCLRの型を利用する。
The One True Object (Part 2) − DLRの型システムについて
DLRの型システムのコアとなるのは、メッセージパッシングだ。
型システムはサポートしたすべての言語で異なる。でも、すべてOOだ。つまりメッセージパッシングで実行される。
Microsoft.Scripting.Actionsを見よ。
アイディア
共通のコモンなメソッドの実装
CLR型
既存のアセンブリに互換な、型拡張をどう実現するか? LINQ(C#3.0)の拡張メソッドだ。
IDynamicObject?
動的言語固有のオブジェクトはIDynamicObjectを実装する。
IDynamicObjectのデフォルト実装があると、ちょろい動的言語の作成には有効だと思うのでそのうち提供するかも。でも、今じゃない。
名前は付け間違えたので、とりあえずIActionableを見ること。そのうち直す。
Keyword(s):
References: