[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Jim Kempf would like to invoke a more general method but not
specifically the next method via CALL-NEXT-METHOD.
I hadn't understood that this is what Jim wanted. I thought it was a
misunderstanding of what would happen with call-next-method.
This could be done by invoking the generic function again if there were
some way to tell CLASS-OF to consider that instances of class C1
are instances of a superclass C2 or if there were some linguistic
means of indicating this at generic function invocation time. That
is, if C2 is a superclass of C1 and I1 is an instance of C1, then
one could invoke a more general method if you could specifiy that
I1 should be considered a direct instance of C2 (assuming C2 is the
correct level of generality).
(defmethod f ((c c1)) 'c1) (defmethod f ((c c2)) 'c2)
(setq i (make-instance 'c1))
(f i) => c1 (f (the c2 i)) => c2
However, CALL-NEXT-METHOD does not seem the proper mechanism
I agree. If we want to support this feature in the standard (Henry Lieberman
has argued for a facility like this), I think we need a construct more like:
(funcall-qua #'f (the c2 i))
where the funcall-qua is the responsible mechanism for interpreting construct