[#950] ruby 1.1b0 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

33 messages 1997/12/05

[#998] ruby 1.1b1 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

48 messages 1997/12/09
[#1011] Re: ruby 1.1b1 released — Kazuhisa Yanagawa <katze@...> 1997/12/10

in message-id: <199712090833.RAA31727@picachu.netlab.co.jp>

[#1013] Re: ruby 1.1b1 released — matz@... (Yukihiro Matsumoto) 1997/12/10

まつもと ゆきひろです

[#1028] Regexp#operators (Re: ruby 1.1b1 released) — Shin-ichiro HARA <sinara@...> 1997/12/10

原です。

[#1030] Re: Regexp#operators (Re: ruby 1.1b1 released) — matz@... (Yukihiro Matsumoto) 1997/12/10

まつもと ゆきひろです

[#1033] Re: Regexp#operators (Re: ruby 1.1b1 released) — Shin-ichiro HARA <sinara@...> 1997/12/10

原です。

[#1049] Re: Regexp#operators (Re: ruby 1.1b1 released) — Shin-ichiro HARA <sinara@...> 1997/12/11

原です。

[#1064] Re: Regexp#operators (Re: ruby 1.1b1 released) — matz@... (Yukihiro Matsumoto) 1997/12/12

まつもと ゆきひろです

[#1097] Re: Regexp#operators (Re: ruby 1.1b1 released) — Shin-ichiro HARA <sinara@...> 1997/12/15

原です。

[#1002] Object#bind — shugo@... (Shugo Maeda)

前田です。

39 messages 1997/12/09
[#1008] Re: Object#bind — matz@... (Yukihiro Matsumoto) 1997/12/10

まつもと ゆきひろです

[#1023] Re: Object#bind — shugo@... (Shugo Maeda) 1997/12/10

前田です。

[#1026] Re: Object#bind — matz@... (Yukihiro Matsumoto) 1997/12/10

まつもと ゆきひろです

[#1044] Re: Object#bind — keiju@... (石塚圭樹 ) 1997/12/11

けいじゅ@日本ラショナルソフトウェアです.

[#1051] Re: Object#bind — shugo@... (Shugo Maeda) 1997/12/11

前田です。

[#1063] Re: Object#bind — matz@... (Yukihiro Matsumoto) 1997/12/12

まつもと ゆきひろです

[#1079] Re: Object#bind — keiju@... (石塚圭樹 ) 1997/12/14

けいじゅ@日本ラショナルソフトウェアです.

[#1084] Re: Object#bind — matz@... (Yukihiro Matsumoto) 1997/12/15

まつもと ゆきひろです

[#1087] Re: Object#bind — keiju@... (石塚圭樹 ) 1997/12/15

けいじゅ@日本ラショナルソフトウェアです.

[#1088] Re: Object#bind — matz@... (Yukihiro Matsumoto) 1997/12/15

まつもと ゆきひろです

[#1085] [Req] object refference — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

12 messages 1997/12/15

[ruby-dev:1134] Re: Object#bind

From: keiju@... (石塚圭樹 )
Date: 1997-12-18 05:16:21 UTC
List: ruby-dev #1134
けいじゅ@日本ラショナルソフトウェアです.

In [ruby-dev :01127 ] the message: "[ruby-dev:1127] Re: Object#bind ",
on Dec/18 10:31(JST) Yukihiro Matsumoto writes:

>まつもと ゆきひろです

>|># UnboundMethodには乗り気でない
>
>理由は二つです(そんなに深くない)
>
>  * 実装が大変(とくにCで記述されたメソッドに関して)
>  * 任意のメソッドと任意のオブジェクトを組み合わせることがで
>    きることに不安を感じる

BoundMethodの意味がやっと分かりました.

  Object#bound_method(method_name)

なんですね? すでにobject(のクラス)に登録してあるメソッドをobjectをレシー
バとしてbindしたメソッドなんですね. で, 実行したい時には,

  bound_method.call(arg,...)

と...

でも, これだとレシーバが固定になってしまいますね.

  Module#bodoud_method(method_name)

って感じのBoundMethodもありますね. この場合はそのModuleに登録されたて
いるっていう意味で束縛されています. この場合は, そのModuleの子孫クラス
のインスタンスから呼びだし可能で, 次のように使えます.

  a_obj.send(bound_method, arg,...)

後者の方が, 色々と応用例がありますね. 

# たしか, この話しの元になったのが
#
#   (fset 'old-func (symbol-funcation 'method)
#   (defun method ...)
#
# をrubyでも行ないたいって話しでしたので...

  Module#bound(method_name, bound_method)

これは, bound_methodの束縛しているクラスの子孫クラスにmethod_nameとし
て登録するメソッドです. そうすると,

  foo = Foo.bound_method(:foo)
  Foo.remove_method(:foo)
  Foo.bount_method(:foo_org, foo)
  Foo.eval_module "def foo; ... foo_org ... ; end"

なんてこともできるようになります. 

いかがでしょう?
  

>|私は, BoundMethodよりもUnboundMethodに期待しているのですが...
>|UnboundMethodがあれば, MLFレベルで使いやすいもの)になるからです.
>
>MLFがより強力になることには同意します.

上記のようなBoundMethodならば, クラスTreeを移動することはできませんが, 
結構使えるものになるかなと思います. ただ, UnboundMethodならばより完璧
なんですが...

>|上記2つはUnboundMethodがあれば:
>|
>|* Object#bound_method(unbound_method)
>|* Module#bound_method(new_method_name, unbound_method)
>|
>|とできてだいぶ単純になっていいんですが...
>
>前者は任意のUnboundMethodと任意のオブジェクトを組み合わせて
>BoundMethodを作ることができることを意味しますよね.

ですね.

>それってかなり不安なのですが.特にrubyのメソッドはsuperを使った連鎖が
>行われるわけですが,それの動作がこのようなモデルを導入した後整合性が
>取れる形で定義できるかどうか,今の時点では断言できません.

うーん. 確かにsuperの問題は微妙ですね... 実際にメソッドが定義されてい
たクラスからたどっていけば良いような気もしますが, そうすれば良いとも限
らないですからねえ...

>|上記のように, BoundMethodはメソッド評価時には便利ですが, メソッドその
>|ものを取り扱うという点からはUnboundMethodの方が便利だと思うのですが...
>
>それは認めます.ただし,採用には以下の条件が満たされているこ
>とを希望します.
>
>  * 現在のメソッドのモデルが破綻しないこと.
>  * できるだけrubyのソースの局所的な変更で実現できること
>
>今はどちらも満たされていないように感じるので,抵抗ありますね.

そうですね. 前者の問題を解消しようとすると, 後者で頑張らなくてはならな
そうですものね.

先ほどのBoundMethodの後者の件でも, 子孫クラスでOKとしましたが, そのク
ラスに限るべきなんですかねえ...


__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju@rational.com <<---

In This Thread