[asdf-devel] Re: :DBG
swmckay at gmail.com
Mon Nov 18 14:14:15 UTC 2013
I'd like to second a number of people's opinions on this:
No individual should be making a decision to define any
functionality in a global namespace. It just invites clashes,
and it sets a bad precedent. This is entirely irrespective of
the person making the decision and the usefulness of the
And plus, functions in the keyword package are gross. ;-)
On Mon, Nov 18, 2013 at 12:17 AM, Faré <fahree at gmail.com> wrote:
> In ASDF 220.127.116.11, I introduced a macro :DBG (in uiop/utility.lisp).
> Yes, it's in the keyword package. Why?
> Because it's the one and only macro I want to be accessible from everywhere
> without a prefix, yet without modifying existing defpackage forms to make
> it accessible — because it's only used temporarily for debugging.
> :DBG is a macro for print-debugging. The syntax is
> (:DBG tag forms... last-form)
> The semantics is that if tag is true, print the tag, then for each
> form, write its source and its values; return the values of the last
> form. If tag is false, just evaluate the last form and return its
> values. (Tag is typically a constant keyword or string, identifying
> the point where values are printed.)
> The expansion is rather space and time efficient, as far as the
> semantics permit.
> I find :DBG soooo useful for print-debugging. I've seen tens of
> variants of it, but every time with something not quite right in the
> syntax, semantics or implementation. I just wanted one variant that
> got everything right, and make it ubiquitous. Because when you need
> it, you need it now, and there's no time to modify things to load an
> additional library. And when you're done, you want minimal cleanup,
> too: just delete the form, except maybe keep the last subform.
> Previously, I was using (uiop:uiop-debug) from uiop/utility which
> allows you to load a magic file of your choice that defines a debug
> mode. The default one I provided was mine, which define :DBG as DBG in
> your current package (thereby avoiding symbol import issues). But that
> still adds a new definition everytime and an extra line or form to
> I was recently convinced that using the keyword package instead makes
> perfect sense: on the one hand, that's using a shared namespace that
> it is polite to not pollute, but on the other hand, such a temporary
> print-debugging macro the only use case I imagine of otherwise wanting
> something to be immediately accessible without package prefixing yet
> without modifying the package definition form.
> It's still time to remove that macro before the next release, but I
> believe it's the right thing to include it, and maybe some of you will
> agree with me and start using it, if not from the yet unrelease ASDF
> 3.1.1, perhaps from a copy in your .sbclrc.
> —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics•
> The common argument that crime is caused by poverty
> is a kind of slander on the poor.
> — H. L. Mencken
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the asdf-devel