<div dir="ltr">I am wrote a very simple package system that I am using for all my developments, I wanted to add<div>the macro with-package so that I can use a package temporarily and then revert to previous context</div><div>
just before using the package.</div><div><br></div><div>in all my developments all lisp files are packages and within each file, in the header of the file, I use some</div><div>other packages and I export the symbols that I want them to be visible to other packages</div>
<div><br></div><div>example:</div><div><br></div><div>I have the files match.lisp, syntax.lisp, utils/utils.lisp and calculus.lisp within the directory <current-directory></div><div><br></div><div>;; file match.lisp</div>
<div>(use utils/utils)</div><div>(export '(match))</div><div>....</div><div><br></div><div>;; file syntax.lisp</div><div>(use match)</div><div>(export '(syntax))</div><div>...</div><div><br></div><div>;; file calculus.lisp</div>
<div>(use syntax match utils/utils)</div><div>(export '(share))</div><div>...</div><div><br></div><div><br></div><div>This works fine and I have the possibility to use and unuse a package at will without dealing with conflicts</div>
<div><br></div><div>to avoid some issues, that I encountered, I imposed a restriction that I only can un-use the last used package</div><div><br></div><div>example:</div><div><br></div><div>(use package1)</div><div>...</div>
<div>(use package2)</div><div>...</div><div>(unuse package1) ;  this is not possible</div><div><br></div><div><br></div><div>This restriction is imposed to avoid that only a subset of some used package is imported</div><div>
(after some sequences of use and unuse), and I found the solution to this cumbersome.</div><div><br></div><div><br></div><div>Now, is it good to have a package system that deals with conflicts automatically</div><div>the way I am doing it? I am not sure but I found it easy to implement and easy to use.</div>
<div><br></div><div>The only issue is with the macro with-package that I can use in situations where I need a package</div><div>in a small section of the program I am writing</div><div><br></div><div>Taoufik</div><div><br>
</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Jan 12, 2013 at 4:06 PM, Robert P. Goldman <span dir="ltr"><<a href="mailto:rpgoldman@sift.info" target="_blank">rpgoldman@sift.info</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I would really discourage you from doing this, even if you can get it to work. Stuffing symbols into a package and then ripping them back out on the fly is pretty crude surgery. It makes the correctness of your code depend on arbitrary context. ("When I call this, will it cause a symbol clash error?").<br>

<br>
Am I correct in thinking that all you want to do is save some typing? If so, a macro that lets you access symbols without explicitly specifying the package, but doesn't have these gross side effects, is probably to be preferred.</blockquote>
</div><br></div>