rodney@huntsai.boeing.com (Rodney Daughtrey) (01/18/91)
Consider the following code:
(defclass foo ()
((bar :type string
:accessor foo-bar)))
(defmethod (setf foo-bar) :after ((self foo) value)
(format t "~%FOO-BAR is now ~A" value))
(let ((foo-1 (make-instance 'foo)))
(setf (foo-bar foo-1) "Hello"))
When I evaluate this code, I expected to see
FOO-BAR is now HELLO
"Hello"
but all I got was
"Hello"
What am I doing wrong? Is there a better way to accomplish this?
I'm using PCL on the Macintosh using Allegro Common LISP 1.3.2.
Thanks!
Rodney Daughtrey E-mail: rodney@huntsai.boeing.com
Huntsville AI Center {major site}!uw-beaver!bcsaic!huntsai!rodney
Boeing Computer Services Voice: (205)-461-2352 Fax: (205)-461-2933desrivieres.parc@XEROX.COM (Jim des Rivieres) (01/18/91)
Counterintuitively, all (setf xxx) functions and methods take the new value as their *first* argument; i.e., try (defmethod (setf foo-bar) :after (value (self foo)) (format t "~%FOO-BAR is now ~A" value))
john@mingus.mitre.org (John D. Burger) (01/19/91)
desrivieres.parc@XEROX.COM (Jim des Rivieres) writes: > Counterintuitively, all (setf xxx) functions and methods take the new > value as their *first* argument; What other argument position makes sense? If you make it the last argument of the SETF function/method, you can't have optional, rest or keyword arguments. John Burger -- John Burger john@mitre.org "You ever think about .signature files? I mean, do we really need them?" - alt.andy.rooney