AK
Size: a a a
AK
ND
ND
RR
a
f
в выражении типа (setq y '(blah blah (f x) blah))
.(setq given-symbol 'form)
dont-you-setq-me
, и пусть(setq dont-you-setq-me 'form)
form
(в предположении, что это валидная форма). Например:CL-USER> (setq dont-you-setq-me '(+ 2 3))
Did you mean 5?
(+ 2 3)
VM
a
CL-USER> (defclass hehe () ((f :accessor f)))
#<STANDARD-CLASS COMMON-LISP-USER::HEHE>
CL-USER> (define-symbol-macro dont-you-setq-me (f (make-instance 'hehe)))
DONT-YOU-SETQ-ME
CL-USER> (defmethod (setf f) :after (_ (x hehe)) (format t "Did you mean ~S?" (eval (f x))))
#<STANDARD-METHOD (COMMON-LISP:SETF COMMON-LISP-USER::F) :AFTER (T HEHE) {1004DF9C83}>
CL-USER> (setq dont-you-setq-me '(+ 2 3))
Did you mean 5?
(+ 2 3)
DP
AK
DP
YK
AK
YK
DP
DP
DE
DP
DP
DE
DP