[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
MacIvory conversion experience
Date: Tue, 21 Feb 89 15:02 EST
From: Barry Margolin <barmar@Think.COM>
Your HIDDEN-ADVISE is pretty nice, but it suffers from one flaw.
A second flaw, too. What if you redefine the function to have a
different arglist? HIDDEN-ADVISE won't be up-to-date, and, in fact,
might raise an error. ADVISE (actually all forms of encapsulation) is
(are) supposed to work across redefinition of the function.
A minor third flaw is that it will be fooled by (DECLARE (ARGLIST ...)).
It should get REAL-ARGLIST.
Sometimes I have used advise to allow a function to take a different
number of arguments than the original DEFUN specifies.
DESTRUCTURING-BIND will signal an error if the arguments and pattern
don't match.
There's actually a simple solution, though: ZL:DESTRUCTURING-BIND isn't
as picky about the arguments matching, but otherwise is similar to
DESTRUCTURING-BIND.
I generally like the idea of advice being able to access all the
arguments by name, though, not just the implicit ones used by flavors
and lexical closures. Do you think you could consider something like
Juergen's code for a future enhancement to advice?
I could consider it, but it's trickier than you're suggesting because of
the redefinition problem. Given the scarcity of resources here, and the
relatively low priority of the suggested improvement, I doubt it will be
touched in the near future unless the whole encapsulation mechanism is
redone from scratch. I don't think that will happen, either. I'm
sorry.
Of course, priorities are always subject to change, but please don't
hold your breath waiting for this one.
barmar