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