On Thu, 11 Oct 2012 22:52:42 -0400, John Cowan <[email protected]> said: > IF is a symbol in the CL package, and attempts to rebind or redefine symbols > in that package don't work. So you need to create a symbol in some other > package by saying (shadow 'if), which forces the current package to contain > a separate IF symbol unrelated to CL:IF. You can then define that > however you want.
By the way, another option is to create one's package so that it does not use the COMMON-LISP package, and then there will be no need to shadow anything. Obviously, this is most useful when there are many symbols which would otherwise have to be shadowed, and few symbols which need to be explicitly imported or written with a package prefix. Another off-topic point is that after (SHADOW 'IF), CL:IF and IF in the current package will be two completely different symbols (and thus not EQL, for example). They will just have the same print name and look deceivingly similar when printed. ---Vassil. -- Vassil Nikolov | Васил Николов | <[email protected]> "Be careful how you fix what you don't understand." (Brooks 2010, 185) _______________________________________________ Scheme-reports mailing list [email protected] http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports
