2
Common Lispの汎用関数からメソッドのリストを抽出する方法はありますか?たとえば
:これはCのAPIを介して行うことができますので、もしCommon Lisp:汎用関数からメソッドを抽出する
(defmethod say ((self string)) ; method-0
(format t "Got string: ~a~%" self))
(defmethod say ((self integer)) ; method-1
(format t "Got integer: ~a~%" self))
(defmethod say ((self symbol)) ; method-2
(format t "Got symbol: ~a~%" self))
(extract-methods-from-generic 'say) ; -> (method-0-obj method-1-obj method-2-obj)
具体的には、私は、ECLをターゲットにしています - それは大丈夫です。
私は次のトリックを行うために、これを必要とする:第二部のために、(CLOS protocolを参照)
(defgeneric merged-generic())
(loop for method
in (extract-methods-from-generic 'some-generic-0)
do (add-method merged-generic method))
(loop for method
in (extract-methods-from-generic 'some-generic-1)
do (add-method merged-generic method))
大丈夫、しかし方法「クローン」することが可能であり、他の一般的な機能にそのコピーを添付? – AlexDarkVoid
この質問の回答を見ることができます:http://stackoverflow.com/questions/11067899/is-there-a-generic-method-for-cloning-clos-objects – Renzo
@Renzo Thats clonigオブジェクト。彼は、この答えで行われたオリジナルを破壊することなく、2つの一般的な方法の間でマージを行いたいと考えています。おそらく誰かが何とかそれを代理することができますか? – Sylwester