Subject: Re: Overwriting Functions/Macros?
From: Erik Naggum <>
Date: 1998/04/02
Newsgroups: comp.lang.lisp
Message-ID: <>

* Marco Antoniotti
| As an aside, I see also that using strings in package related functions
| and macros for package names and symbol names is a *good* thing.

* Erik Naggum
| uhm?  why?  using strings interferes with case massaging in the Lisp
| reader.  the only advantage is that no new symbols are created, but using
| uninterned symbols or keywords (for package names) isn't _that_ much
| trouble, is it?

  thanks to Kent Pitman, Marco Antoniotti, and Tim Bradshaw for their
  comments.  the reason for my concern is a little involved, so let me
  explain.  I use Franz Inc's Allegro Common Lisp and it has a feature,
  called the "case mode", whereby symbols names may be downcased.  (this
  also makes APROPOS a lot easier to use.)  the reason I switched to use
  "case-sensitive-lower" (as it is called) as the preferred case was that
  the Lisp printer in ACL doesn't quite follow the specification when
  *PRINT-CASE* and READTABLE-CASE settings differ from the defaults, and I
  really don't want to read symbol names in all caps (except in prose text
  where they are meant to stand out).  therefore, I also switched to using
  uninterned symbols in DEFPACKAGE.  I agree with Tim that it has a certain
  grotesque flavor to it, but I saw it as better than the name conflicts
  that would follow from using the wrong case when "hard-wiring" the case
  of symbols names.  however, upon thinking a bit more about this, spurred
  by the comments I received, I have returned to "case-insensitive-upper"
  as the preferred case mode and switched to using strings in DEFPACKAGE
  and other such forms.  thanks, guys.  *PRINT-CASE* is :DOWNCASE.  I'll
  see if I can unlearn the habit of using APROPOS on lower-case strings.

  (defmacro pretty-loop (&rest parenthesized-forms)
    "Make the dream that each LOOP clause be parenthesized come true."
    `(loop ,@(apply #'append parenthesized-forms)))