まつもと ゆきひろです
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にはない).
まつもと ゆきひろ /:|)