[asdf-devel] Re: :DBG

Alessio Stalla alessiostalla at gmail.com
Mon Nov 18 09:09:24 UTC 2013

Fair enough, I mostly agree with your reasoning, thanks for taking the time
to elaborate.

On Mon, Nov 18, 2013 at 9:58 AM, Pascal Costanza <pc at p-cos.net> wrote:

> Last time I checked, asdf was not a debugging or utilities library.
> Fare's reasoning is also flawed. The problem stated in the claim "because
> when you need it, you need it now" is not solved with his suggestion,
> because it assumes that you have the right version of asdf loaded.
> Otherwise it is actually not available "now".
> How people debug code is a highly personal and subjective choice. No
> matter how much Fare tries to make a variant that "gets everything right",
> he will fail, because what is right for him may not be right for others.
> His hidden agenda seems to be to piggy back on the widespread use of asdf
> and force his views on how things "should" be done on the Lisp community.
> I have already considered removing asdf completely from my workflow in the
> past. If asdf starts to mess with such fundamental rules for allowing
> indepently developed code to coexist, then it will be the final blow for me.
> Pascal
> Sent from my iPad
> On 18 Nov 2013, at 09:44, Alessio Stalla <alessiostalla at gmail.com> wrote:
> Well, Faré is obviously well aware of that, and has given an explanation
> for why he is willing to "break the rules" this particular time. So "don't
> dare touch the keywords package!" does not seem the right answer to me...
> Faré, I understand your points, what fails me is: if this is a debug macro
> nobody won't ever use in production code, why make it available in a
> library at all? Why couldn't it simply live in your rc file? Or, you could
> include it in uiop with a non-keyword name, and only bind it to :dbg in
> your own environment. I fail to understand why you'd want to it be
> available everywhere, everytime... and for everyone as well!
> Alessio
> On Mon, Nov 18, 2013 at 9:28 AM, Pascal Costanza <pc at p-cos.net> wrote:
>> Hm, just when I thought this the mailing list for professional Common
>> Lisp users.
>> Off the top of my hat:
>> http://www.lispworks.com/documentation/HyperSpec/Body/11_abcb.htm
>>  Pascal
>> Sent from my iPad
>> On 18 Nov 2013, at 08:51, Hans Hübner <hans.huebner at gmail.com> wrote:
>> Pascal,
>> if you mean what you write, can you give some reasoning?
>> -Hans
>> 2013/11/18 Pascal Costanza <pc at p-cos.net>
>>> This will be setting a very bad precedence. Just don't. Really!
>>> Pascal
>>> Sent from my iPad
>>> > On 18 Nov 2013, at 06:17, Faré <fahree at gmail.com> wrote:
>>> >
>>> > In ASDF, 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
>>> > cleanup.
>>> >
>>> > 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•
>>> http://fare.tunes.org
>>> > 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...
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20131118/0cd26872/attachment.html>

More information about the asdf-devel mailing list