<div dir="ltr">Pascal,<div><br></div><div>if you mean what you write, can you give some reasoning?</div><div><br></div><div>-Hans</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/11/18 Pascal Costanza <span dir="ltr"><<a href="mailto:pc@p-cos.net" target="_blank">pc@p-cos.net</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">DON'T TOUCH THE KEYWORDS PACKAGE! Are you crazy?!?<br>
<br>
This will be setting a very bad precedence. Just don't. Really!<br>
<br>
Pascal<br>
<br>
Sent from my iPad<br>
<div class="HOEnZb"><div class="h5"><br>
> On 18 Nov 2013, at 06:17, Faré <<a href="mailto:fahree@gmail.com">fahree@gmail.com</a>> wrote:<br>
><br>
> In ASDF 3.1.0.14, I introduced a macro :DBG (in uiop/utility.lisp).<br>
> Yes, it's in the keyword package. Why?<br>
> Because it's the one and only macro I want to be accessible from everywhere<br>
> without a prefix, yet without modifying existing defpackage forms to make<br>
> it accessible — because it's only used temporarily for debugging.<br>
><br>
> :DBG is a macro for print-debugging. The syntax is<br>
> (:DBG tag forms... last-form)<br>
> The semantics is that if tag is true, print the tag, then for each<br>
> form, write its source and its values; return the values of the last<br>
> form. If tag is false, just evaluate the last form and return its<br>
> values. (Tag is typically a constant keyword or string, identifying<br>
> the point where values are printed.)<br>
> The expansion is rather space and time efficient, as far as the<br>
> semantics permit.<br>
><br>
> I find :DBG soooo useful for print-debugging. I've seen tens of<br>
> variants of it, but every time with something not quite right in the<br>
> syntax, semantics or implementation. I just wanted one variant that<br>
> got everything right, and make it ubiquitous. Because when you need<br>
> it, you need it now, and there's no time to modify things to load an<br>
> additional library. And when you're done, you want minimal cleanup,<br>
> too: just delete the form, except maybe keep the last subform.<br>
><br>
> Previously, I was using (uiop:uiop-debug) from uiop/utility which<br>
> allows you to load a magic file of your choice that defines a debug<br>
> mode. The default one I provided was mine, which define :DBG as DBG in<br>
> your current package (thereby avoiding symbol import issues). But that<br>
> still adds a new definition everytime and an extra line or form to<br>
> cleanup.<br>
><br>
> I was recently convinced that using the keyword package instead makes<br>
> perfect sense: on the one hand, that's using a shared namespace that<br>
> it is polite to not pollute, but on the other hand, such a temporary<br>
> print-debugging macro the only use case I imagine of otherwise wanting<br>
> something to be immediately accessible without package prefixing yet<br>
> without modifying the package definition form.<br>
><br>
> It's still time to remove that macro before the next release, but I<br>
> believe it's the right thing to include it, and maybe some of you will<br>
> agree with me and start using it, if not from the yet unrelease ASDF<br>
> 3.1.1, perhaps from a copy in your .sbclrc.<br>
><br>
> —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• <a href="http://fare.tunes.org" target="_blank">http://fare.tunes.org</a><br>
> The common argument that crime is caused by poverty<br>
> is a kind of slander on the poor.<br>
> — H. L. Mencken<br>
><br>
<br>
</div></div></blockquote></div><br></div>