<div dir="ltr"><div>Current package when you call with-package </div><div><br></div><div>? *package*</div><div><div>#<Package "COMMON-LISP-USER"></div></div><div><br></div><div>;; The curent package is COMMON-LISP-USER</div>
<div><br></div><div><span class="">? (with-package (calculus) </span>(share '(fn x (+ x 1))<span class="">))</span></div><div>;;; (share '(fn x (+ x 1))) must be evaluated (use calculus), where share is imported from the package calculus</div>
<div><br></div><div>I tried the following to show the issue:</div><div><br></div><div>? (unintern 'share)</div><div>T</div><div>? (use calculus)</div><div>NIL</div><div>? (values (find-symbol "SHARE") (symbol-package 'share))</div>
<div>SHARE</div><div>#<Package "/Users/mazeboard/workspace/ccl/CALCULUS.LISP"></div><div>? (share '(fn x (+ x 1)))</div><div>... ; result of the function share imported from calculus</div><div>? (unuse calculus)</div>
<div>NIL</div><div>? (values (find-symbol "SHARE") (symbol-package 'share))</div><div>SHARE</div><div>#<Package "COMMON-LISP-USER">  ;;; after unuse calculus SHARE is not from calculus anymore</div>
<div>? (progn (use calculus) (values (find-symbol "SHARE") (symbol-package 'share)))</div><div>SHARE</div><div>NIL</div><div>? </div><div><br></div><div>As you can see in the last expression (progn) even though we use calculus the symbol SHARE is</div>
<div>not visible</div><div><br></div><div>Thank you for the help</div><div><br></div><div>Taoufik</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Jan 12, 2013 at 2:36 PM, Pascal J. Bourguignon <span dir="ltr"><<a href="mailto:pjb@informatimago.com" target="_blank">pjb@informatimago.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">Taoufik Dachraoui <<a href="mailto:dachraoui.taoufik@gmail.com">dachraoui.taoufik@gmail.com</a>> writes:<br>

<br>
> Hi<br>
><br>
> I am trying to define a macro as follows:<br>
><br>
> (defmacro with-package ((&rest names) &body body)<br>
>   `(progn<br>
>      (use ,@names)<br>
>      ,@body<br>
>      (unuse ,@(reverse names))))<br>
><br>
> The issue is that the body may use symbols defined in one of<br>
> the names (packages) and not in the current package<br>
<br>
</div>"Current" WHEN?<br>
<div class="im"><br>
<br>
<br>
> How to do this? I tried with eval-when but I do not know how to use<br>
> it correctly<br>
<br>
</div>What are the situations available to eval-WHEN?<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
--<br>
__Pascal Bourguignon__                     <a href="http://www.informatimago.com/" target="_blank">http://www.informatimago.com/</a><br>
A bad day in () is better than a good day in {}.<br>
<br>
_______________________________________________<br>
Openmcl-devel mailing list<br>
<a href="mailto:Openmcl-devel@clozure.com">Openmcl-devel@clozure.com</a><br>
<a href="http://clozure.com/mailman/listinfo/openmcl-devel" target="_blank">http://clozure.com/mailman/listinfo/openmcl-devel</a><br>
</font></span></blockquote></div><br></div>