まつもと ゆきひろです

In message "[ruby-list:3292] meta programings [Re:exceptions (Re: Ver 1.1 [Re: Matrix])]"
    on 97/07/07, 石塚圭樹 <keiju / bc.mbn.or.jp> writes:
|けいじゅ@今はフリー(^^;;;です. 

|ここでの要望が変わってくるといえるのかなあ... Dylanは良く知りませんが
|Lispなどのマクロは, 呼出側のコンテキストでインライン(マクロ)展開します
|よね? で, 一般の式をマクロ展開するには, それなりの機能が必要になるわけ
|ですが, rubyには eval があるのであとは, caller_bindingみたいのがあれば
|どうにかなるかなと思ったわけです.

ならないことはないでしょうねえ.こういうメタ系の機能は嬉しい
人には嬉しいけど大多数の人には関係ないんで,まずどこまでやる
かを議論したいわけです.

|イテレータブロックから元のソースコードを出力したり, 構文木をアクセスす
|る機能ってのは, 難しいですかねえ? 難しそうですねえ...

むずかしいです.

|>  * 現在のインタプリタの実装ではupvarを実装するのはちょっと
|>    大変(呼び出し元のコンテキストへのポインタを保存していな
|>    いので)
|
|うーん. なるほど... 今の実装のままで頑張って取り出すことはできないんで
|すかね?

今のままではできないですね.直前のスコープはどのスコープかと
いう情報がまったくありませんからね.

|イテレータとして呼ばれているかどうかは, {}があるかどうかで判断している
|んですよね?

はい.

|ところで, python のメタプログラミングサポートってどんな感じ?

全てのインスタンス変数がself.__dict__で参照できるとか,全て
のスーパークラスがclass.__bases__で参照できるとか,いろんな
情報がHashとして得られる程度です(が,それさえもrubyにはない).

                                まつもと ゆきひろ /:|)