Re: Case-sensitivity goals, policy and implementation
Subject: Re: Case-sensitivity goals, policy and implementation
From: Raymond Toy
Date: Thu, 14 Oct 2004 10:56:12 -0400
>>>>> "ole" == ole rohne <ole.rohne@cern.ch> writes:
Raymond> Look, there's the readtable-case implementation of :invert
Raymond> for gcl! All gcl needs now is the logic to do the right
Raymond> thing for :invert and print-case :upcase. :-)
ole> I understand that your preference is towards using the system-supplied
ole> readtable-case. I'd like to point out that we will not be able to
ole> implement (over-)smart case-coercion, eg upcase a symbol name only if
ole> that will match an existing symbol. This could be considered a benefit:-)
My own feeling is that if we are to be case-sensitive, we should be
exactly that, without exception. No smart coercion or anything---it
will only confuse people.
ole> (I still think *PACKAGE* should be explicit)
Raymond> Everything in maxima is in the maxima package. If we ever get
Raymond> multiple packages, we'll have to examine this.
ole> I'd like to think of *PACKAGE* as the default for for the lisp system
ole> proper, and blindly overloading it for the Maxima reader/parser is
ole> likely to cause confusion. I think Maxima should have it's own special
ole> variable *MAXIMA-PACKAGE* for this purpose, it's own readtable and a
Yes, I think having this variable is a good idea. But I think it's
utility is limited. You'd have to locate all places where you really
want things in the maxima package and either bind *package* to
*maxima-package* or give *maxima-package* as an arg. Much less error
prone if we just leave *package* always bound to (find-package
:maxima). This is nice too, when you get into the lisp debugger.
You're already in the maxima package, so you don't have to prefix
anything with maxima:: to use it.
ole> special variable *MAXIMA-READTABLE* bound to it.
Yes, I think this is even more important than *maxima-package*,
because we want to set the readtable-case. There's already a
*macsyma-readtable* but it seems only to be needed with allegro (from
looking at user::run in init-cl.lisp). I would have used that except
it adds a dispatch macro character that I didn't understand.
Ray