Subject: Re: ACL 6.0 Trial Edition ships with non ANSI reader behavior. From: Erik Naggum <erik@naggum.net> Date: 2000/11/04 Newsgroups: comp.lang.lisp Message-ID: <3182371042747250@naggum.net> * Marco Antoniotti <marcoxa@cs.nyu.edu> | I just downloaded a trial version of ACL 6.0 (waiting for the | commercial upgrade) and found out, to my dismay, that ACL 6.0 ships | in non-ANSI mode when it comes to the reader behavior. I'm intrigued to learn why that causes _your_ dismay. | This has bit me very hard for a number of reasons. Now, this is obviously silly, as you explain yourself: The readme file does explain everything you need. What bit you was that you did not read the readme file, right? Don't blame the wrong guy here. | In the file 'readme.txt' Franz explains how to generate an ANSI | 'image' from the one available. Are these instructions insufficient for any reason? Rather than build a new image, I prefer to stuff this in .clinit.cl. (excl:set-case-mode :case-insensitive-upper) (when (lep:lep-is-running) (lep::eval-in-emacs "(setq fi::lisp-case-mode :upper)")) | My understanding is that the commercial release will come with an | ANSI image available, however, the commercial version is not | distributed yet. I think the readme file explains everything you need to do in order to build the kinds of images you need. I am decidedly ambivalent on the wisdom of shipping a lower-case image, myself, but I think the painlessness of making your own image makes complaints seem silly. Please note that for whatever reason, the Windows version seems to be in ANSI "mode". This is probably because Franz feels that Unix is already so deeply entrenched in the case-sensitive lower-case world that it would be a pain to many non-old-timers to be exposed to a Common Lisp where the case behavior of symbols is "unreasonable". One of the first things I did in Allegro CL was (setq-default *print-case* :downcase), just like I had figured out how to stop CMUCL from shouting, simply because I think a computer that talks to me in upper case is very rude and smells of age like some of the things in my refrigerator that had to be shot before they attacked Xyzzy, my lovely cat, but that does not _necessarily_ mean that I think symbols should be in lower-cased and the reader case sensitive. I have come to conclude that this case thing does not matter much to me -- although it is a deeply religious issue to people I otherwise respect. What matters to me is that I can know what to expect from the environment, but if you query Allegro CL in "modern Lisp" mode, it will lie to you about what it does. That bugs _me_ a helluva lot. (5) cl-user (readtable-case *readtable*) => :upcase (6) cl-user *print-case* => :upcase At the very least, readtable-case should return :preserve, which does have ANSI-defined semantics for the other printer variables and is exactly what the reader is doing. I have complained about this internally several times and it annoys me that I'm not heard on this issue, so now I'm airing it in public. Moreover, it is impossible to make a readtable in Modern Lisp that _does_ upcase when that's what I actually want. These are bugs, not features. These are breaking the standard and ignoring my needs. If the Common Lisp community is going to accept lower-case symbols, which is the crux of the matter, it must have a graceful upgrade path, not a fork in the road like a T intersection with no way to interoperate with the other decision. I think Franz Inc is doing the Common Lisp community a service by letting them know Common Lisp can have lower-case symbols and a case sensitive reader, too, like so many other modern languages, and that programming under a standard Common Lisp system which ignores case issues is a good thing. I think Franz Inc is doing the Common Lisp community a disservice by forcing people to use the ANSI mode if they want to have only _some_ features of the standard behavior. That way, people will _not_ be able to move to a more modern Lisp if they want to, but must stay "behind". Wanting case-insensitive and/or upper-case _parts_ of a system is not evil even if some think that upper-case symbols are or that a case-insensitive reader is. If Franz Inc wants to succeed with their modern Lisp, they must not force me to ignore them if I do not accept the whole package deal. It is simply wrong to tell me that I shall never need a readtable that _does_ upcase, and it is simply wrong to _lie_ to me about the case behavior of the current readtable. Stop that. Be nice to the upper-case people, and they might follow you, in time. Offend them like you have, and they will _have_ to antagonize you just to keep what they want to keep. Not that I haven't said this before, but it is precisely because you ignore me that I have to say it over and over. Until the modern Lisp stops lying and breaking readtable-case, it should not be published. When it has been fixed to work the right way, meaning: lower-case symbols, corresponding printer variable settings, and a default readtable-case value of :preserve, it should be let out in public, again. The use of some hidden variable to control the "case-mode" is bogus all the way. #:Erik -- Does anyone remember where I parked Air Force One? -- George W. Bush