use of qualifiers of a luna method

守岡 知彦 / MORIOKA Tomohiko tomo @ kanji.zinbun.kyoto-u.ac.jp
2002年 4月 15日 (月) 18:45:40 JST


>>>>> [emacs-mime-ja : No.00978] にて
>>>>> “中島さん”= NAKAJIMA Mikio <minakaji @ osaka.email.ne.jp> さま曰く:

中島さん>   luna.el で、同名の method につき、異なる qualifier を指定
中島さん> して複数回 luna-define-method すると、最後に define した 
中島さん> method だけが有効になって他が無効になってしまいます。

(略)

中島さん> 簡単に直せそうだったらやろうかと思ったのですが、
中島さん> luna-define-method がそもそも 1 つの qualifier にしか対応し
中島さん> ていないので挫折しました。

中島さん> luna.el を使い込むにつれ、どうも advice.el の姿と重なって見えて仕方な
中島さん> いのですが、advice.el が :before, :around, :after の各 qualifier
中島さん> (advice.el では class と呼ばれている) を併用可能なのに対して、luna.el
中島さん> が上記のように 1 つだけの qualifier が有効でしかも、評価の順が有効な
中島さん> qualifier を決めるのは様なのは少し見劣りがするような気がします。

中島さん> これについて、改善の予定はあるでしょうか?

微かな記憶を辿ると、もともと qualifier も support しないつもりだった気
がします。でも必要なので最小限のものを付けた気がします。

そういう訳で、需要があるのなら付けることに賛成します。

ところで、qualifier の出典ですが、直接的には CLOS のをお手本にしてます。

そして、確か、起源は Flavor に遡るのではないかと思います。[1] によれば
Flavor には :before, :after の他に :list, :and, :or, :progn, :append 
などがあったようです。これらは適用可能な method の集合に対して実行制御
と返り値のまとめ方を指定するもののようです。どうもあんまり評判は良くな
かったようで、それで :around が出て来たのかなという気も実際の所は知り
ません。余談ですが竹内郁夫が作った TAO という Lisp ベースの『マルチパ
ラダイム言語』にも Flavor と同様のものがあった気がします。[2] によれば
「…など盛りだくさんのメニューが用意されており、(中略)実はどれも実際
にはほとんど使われない(元祖 Flavors には意地で使ったという例があるが)。
専ら使われるのは :daemon という組合せである。」とあり、:list とか :and
とかの類の使用頻度はやはり低かったようです。


[1] 「Lisp マシ ンのオブジェクト指向プログラミング」bit Vol.17, No.11

[2] 「マルチパラダイム言語 TAO(6) オブジェクト指向(2)」bit Vol.20,
    No.6

-- 
┯━…‥・懐かしい未来の記憶をふと思い出しかけた・‥…━━┯━━━┯━
││ ─ │  ─  /    ─   ┼─     ┬                ─   ─┼ ┬┴─
┼┼─┼|〓━─┼ 守岡 知彦 (MORIOKA Tomohiko) <tomo @ m17n.org> ─ ─┬
┻┻━┻━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━




More information about the Emacs-mime-ja mailing list