【入門】Common Lisp その6【質問よろず】at TECH
【入門】Common Lisp その6【質問よろず】 - 暇つぶし2ch93:デフォルトの名無しさん
09/04/09 11:23:31
>>92
ありがとうございます。ですが、メッセージ名を気をつけても、現実としてメッセージ名の
衝突は起こると思います。

たとえばC++で申し訳ないんですが、
class Foo
{
virtual void update() = 0;
};

class Bar
{
virtual void update(bool flag) = 0;
};
があるとすると、メッセージ名がupdateと同じでもメッセージのプロトコルが違います。
C++なら単一ディスパッチなので、メッセージ送信先とメッセージ名で呼ぶべきメッセー
ジのプロトコルが定まります。
ですが同じことをCommon Lispでしようとしたら、パッケージにくるんで、呼び出し元で

(foo:update foo-instance)
(bar:update bar-instance t)

とする方法か、もしくは総称関数を

(defgeneric update (o &rest rest))

と定義するくらいしか思いつきません。前者はどうみても冗長ですし、後者はCommon Lisp
の引数チェック機構が死にます。

根本的に勘違いしてる可能性もありますが、うまい方法はないでしょうか。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch