From: Mike B. <be...@hi...> - 2003-10-27 05:12:31
|
Peter, Thanks for make-symbol-macro. (I have been using it since last night.) Now the modified CLisp code for define-symbol-macro works: (defmacro define-symbol-macro (symbol expansion) (unless (symbolp symbol) (error-of-type 'source-program-error (TEXT "~S: the name of a symbol macro must be a symbol, not ~S") 'define-symbol-macro symbol)) `(LET () (EVAL-WHEN (COMPILE LOAD EVAL) (CHECK-NOT-SPECIAL-VARIABLE-P ',symbol) (MAKUNBOUND ',symbol) (setf (symbol-value ',symbol) (SYSTEM::MAKE-SYMBOL-MACRO ',expansion))) ; new ; (SYSTEM::SET-SYMBOL-VALUE ',symbol : orig ; (SYSTEM::MAKE-SYMBOL-MACRO ',expansion)) ) ; orig ',symbol)) (defun check-not-special-variable-p (symbol) (when (special-variable-p symbol) (error-of-type 'program-error (TEXT "~S: the symbol ~S names a global variable") 'define-symbol-macro symbol))) but it is pretty much irrelevant since ABL provides define-symbol-macro "out of the box" Thanks for the quick turn-around, - Mike -----Original Message----- From: Peter Graves [mailto:pe...@ar...] Sent: Saturday, October 25, 2003 9:26 AM To: be...@hi... Cc: arm...@li... Subject: Re: [j-devel] set-symbol-value On Thu, 23 Oct 2003 at 17:43:33 -0500, Mike Beedle wrote: > My questions are: > > 1) can I use ABL's SYSTEM:SYMBOL-VALUE for SET-SYMBOL-VALUE? 1) For SET-SYMBOL-VALUE (which isn't ANSI), you can use (for example) (setf (symbol-value 'foo) 42) (the ANSI way to do it, which ABL fully supports). > 2) What should I use for SYSTEM:MAKE-SYMBOL-MACRO? 2) There's not yet any support in ABL for symbol macros, and the CLISP code won't help without a bit more support in the ABL infrastructure (specifically, the equivalent of their SYSTEM::MAKE-SYMBOL-MACRO, plus some changes to MACROEXPAND and friends to recognize and expand symbol macros). I'll try to get all of that done this weekend, just as soon as I finish with this little problem in the compiler... ;) Sorry for the inconvenience! -Peter |