Subject: Re: [not so] basic package question
From: Erik Naggum <erik@naggum.net>
Date: Thu, 25 Apr 2002 23:58:48 GMT
Newsgroups: comp.lang.lisp
Message-ID: <3228767928477880@naggum.net>

* Kent M Pitman
| This is just not a difficult problem.
| SUGGESTION: JUST DON'T USE NON-PORTABLE STUFF.

  This is the wrong response to the situation.  It is often necessary to
  use non-portable stuff to get the job done.  It is not even sufficient to
  say "non-standard", because many interesting things are not standardized.
  To make this as precise as possible, I think the most _accurate_ term
  should be "anti-standard" or "counter-standard".  If the standard
  mandates something, do it that way.  If no standard mandates something,
  do it any way you want.

| There is simply no good programming need for non-portable naming.  It is
| a contrived problem.

  I actually disagree on this.  The problem is very real: When you set up a
  case sensitive reader, and that _is_ an option in the standard, the only
  way to type lower-case symbol names and get the standard symbols is to
  use :invert, which only inverts monocase symbol names.  This means that
  (symbol-name <whatever>) may be exactly what you want, or the inverted
  version of what you want if it happened to be monocase.  The only option
  is to use some other function than symbol-name to retrieve the name of
  the symbol, and then you need some other function than intern to make a
  new symbol, which effectively inverts it before calling the regular
  intern.  This is an annyoing waste.  As a user-code programmer, the only
  solution is to make your own abstraction for symbols, which leads to
  messy interaction with other systems.  As a systems-code programmer, you
  should instead provide the necessary features and facilities to choose a
  lower-case _view_ of the standard symbols and their names.  This is what
  I have been working with.  In any case, the _actual_ internal symbol name
  is immaterial as long as cl:intern and ecl:symbol-name both work with
  upper-case symbol names for the common-lisp-package.  What it _actually_
  is underneath should not concern anyone: that is _not_ what the standard
  mandates.

///
-- 
  In a fight against something, the fight has value, victory has none.
  In a fight for something, the fight is a loss, victory merely relief.

  Post with compassion: http://home.chello.no/~xyzzy/kitten.jpg