Re: Case-sensitivity goals, policy and implementation



>>>>> "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