On Sun, Jun 2, 2013 at 2:02 PM, Alex Lier <Alexander.Lier@gmx.net> wrote:
I want to shadow functions and special forms in a certain scope.
With normal functions everything works fine, but with special forms I get errors.
I believe the short answer is that you can't.
According to the language standard, you are not allowed to fiddle with symbols in the COMMON-LISP package.
SBCL allows you to bypass this with package locks, but when doing so you are strictly on your own. If it doesn't work, well, that's just too bad. Also, even if it does work, it might break in the next version of SBCL.
Are you sure that you need to fiddle with COMMON-LISP:FUNCTION (or whatever). Might you not get the results you need with FAKE-COMMON-LISP:FUNCTION?
The idea to set up a package that USEs and reEXPORTs most of CL, only substituting the symbols you want to play with.
You might need to give a definition like
(defmacro fcl:function (name)
to make it work outside the regions in question.