Subject: Re: ACL 6.0 Trial Edition ships with non ANSI reader behavior.
From: Erik Naggum <erik@naggum.net>
Date: 06 Nov 2000 05:42:48 +0000
Newsgroups: comp.lang.lisp
Message-ID: <3182478168230749@naggum.net>

* Robert Monfera <monfera@fisec.com>
| This lead me to a possibly irrelevant and naive question: why isn't case
| preservation or modern behavior controlled at the package level?

  Basically because packages share symbols a lot.  If you search the
  external symbols on each of the package on a package's use list in
  different cases, you're going to go nuts before you get used to
  which package a symbol is actually in.

| It would help retain compatibility with packages that are nothing to
| do with interfacing (like series), and even let the door open for
| future swings back to case-insensitivity in the outside world.

  This should be controllable with the readtable, instead, so that
  when you process some code from a slightly different world, you can
  tune a lot of things to make it right.  Allegro CL has a "named
  readtable" feature, and you can easily bind *readtable* at the top
  of special files, but this requires that readtables are supported.
  With the patch I posted to nuke excl::*forced-readtable-case-raw*,
  you get this behavior back.

| As (interned) symbols are managed by packages, would it not be the
| right level, rather than the entire image, in the name of modularity
| and scalability?

  Yes.  This is why the readtable is the correct place to make this
  decision, not a global variable that controls the entire image.
  However, you must have consistency in how you store the symbol's
  names.  If you alternate between lower-case and upper-case, you will
  lose track of which readtable applies to which package, and there
  lies madness, too.

#:Erik
-- 
  Does anyone remember where I parked Air Force One?
                                   -- George W. Bush