(define-modify-macro removef (item &rest remove-keywords)
(lambda (seq item &rest keyword-arguments)
(apply #'remove item seq keyword-arguments))
"Modify-macro for REMOVE. Sets place designated by the first argument to
the result of calling REMOVE with ITEM, place, and the REMOVE-KEYWORDS.")
(define-modify-macro deletef (item &rest remove-keywords)
(lambda (seq item &rest keyword-arguments)
(apply #'delete item seq keyword-arguments))
"Modify-macro for DELETE. Sets place designated by the first argument to
the result of calling DELETE with ITEM, place, and the REMOVE-KEYWORDS.")
It seems that the use of DEFINE-MODIFY-MACRO doesn't match the ANSI CL standard. HyperSpec[1] says the 3rd argument of DEFINE-MODIFY-MACRO must be a symbol, not a lambda expression. A new version of LispWorks (still under test) will cannot compile these two definitions:
ANSI CL requires the argument to be a symbol, so I think ARNESI is wrong. We
changed this in LW 5.1. --- Martin Simmons from LispWorks, Ltd.
Hope you can fix this, thanks.
Chun TIAN (binghe)