PS does the following to warn you about redefining built-in operators:
(warn "Redefining Parenscript operator/macro ~A" name)
As it happens, we redefine DEFMACRO and IN-PACKAGE to expand to nothing and @ to expand to something a bit different than what PS does. The purpose of these redefinitions is to support cross-compiling a number of files to both CL and JS.
Unfortunately, that warning turns into an error preventing ASDF from loading the system in SBCL:
; compilation unit aborted ; caught 1 fatal ERROR condition ; caught 3 WARNING conditions
I don't see what the ERROR is, since only the above three warnings are written to the REPL. It goes away, however, when I comment out the WARN form above.
I have an ugly workaround for this (reach in to PS::*PS-DEFINED-OPERATORS* and rip out these three symbols before attempting to redefine them), but that seems like a horrible thing to do. Resorting to SBCL's condition-muffling mechanism seems even worse.
Just to be clear, I don't object to PS issuing the warning, just to the fact that it turns into a fatal error along the way. So I guess my question is: what's the intended way to redefine a PS operator/macro, on the rare occasion when one really does need to do that?
Daniel