けいじゅ@今はフリー(^^;;;です. In [ruby-list :03293 ] the message: "[ruby-list:3293] Re: meta programings [Re:exceptions (Re: Ver 1.1 [Re: Matrix])] ", on Jul/07 12:21(+0200) matz / caelum.co.jp (Yukihiro Matsumoto) writes: >|ここでの要望が変わってくるといえるのかなあ... Dylanは良く知りませんが >|Lispなどのマクロは, 呼出側のコンテキストでインライン(マクロ)展開します >|よね? で, 一般の式をマクロ展開するには, それなりの機能が必要になるわけ >|ですが, rubyには eval があるのであとは, caller_bindingみたいのがあれば >|どうにかなるかなと思ったわけです. > >ならないことはないでしょうねえ.こういうメタ系の機能は嬉しい >人には嬉しいけど大多数の人には関係ないんで,まずどこまでやる >かを議論したいわけです. ですねえ. >|イテレータブロックから元のソースコードを出力したり, 構文木をアクセスす >|る機能ってのは, 難しいですかねえ? 難しそうですねえ... > >むずかしいです. 元のソースコードを出すのも難しい? そういう情報は捨てちゃっているんだっ け? まあ, 関数定義レベルの構文要素をアクセスしたくなるということは, 滅多に ないのですが... >|うーん. なるほど... 今の実装のままで頑張って取り出すことはできないんで >|すかね? > >今のままではできないですね.直前のスコープはどのスコープかと >いう情報がまったくありませんからね. なるなる. >|イテレータとして呼ばれているかどうかは, {}があるかどうかで判断している >|んですよね? > >はい. わかりました. >|ところで, python のメタプログラミングサポートってどんな感じ? > >全てのインスタンス変数がself.__dict__で参照できるとか,全て >のスーパークラスがclass.__bases__で参照できるとか,いろんな >情報がHashとして得られる程度です(が,それさえもrubyにはない). いまの ruby は, あるクラスや関数名を指定して存在するかどうかのチェック しかできないですからね. # ただ, 辞書関係の情報は開発環境を作るとかインスペクタを作るとかいう時 # には, 必要な機能といえますが, 私が良くやるような動的にクラスを作るよ # うなプログラミングにはあまり必要ない機能ですけどね. __ .........................................石塚 圭樹@今はフリー(^^;;... ------->>また, アドレス変わりました!! e-mail: keiju / bc.mbn.or.jp <<---