[Openmcl-devel] with-package

Pascal J. Bourguignon pjb at informatimago.com
Sun Jan 13 12:54:54 PST 2013

Taoufik Dachraoui <dachraoui.taoufik at gmail.com> writes:

> The solution is to not unintern symbols, instead I use a function
> %set-symbol as follows:
> (defun %set-symbol (s1 s2)
>   (setf (symbol-plist s1) (symbol-plist s2))
>   (if (boundp s2)
>       (setf (symbol-value s1) (symbol-value s2))
>       (makunbound s1))
>   (if (fboundp s2)
>       (if (null (macro-function s2))
>           (setf (symbol-function s1) (symbol-function s2))
>           (setf (macro-function s1) (macro-function s2)))
>       (fmakunbound s1)))
> Check the function %import to see when %set-symbol is called.
> This way the imported symbol from calculus will bound/fbound the
> symbol created by the reader

Then the following will fail:

    (defvar *fun*)

    (with-package (calculus)
       (setf *fun* 'share))

    (funcall *fun*)

__Pascal Bourguignon__                     http://www.informatimago.com/
A bad day in () is better than a good day in {}.

More information about the Openmcl-devel mailing list