Lisp case (Re: [Maxima] Case sensitivity, line labels and the future)
Subject: Lisp case (Re: [Maxima] Case sensitivity, line labels and the future)
From: James Amundson
Date: Tue, 15 Apr 2003 18:01:56 -0500
On Tue, 2003-04-15 at 17:10, Raymond Toy wrote:
> Since no one has brought this up, I thought I would.
I've been thinking about these issues all along.
> ANSI Common Lisp is "inherently" uppercase because when things are
> read, they are converted to uppercase. It's possible to change this,
> but then you have to do weird things to the code, like putting |'s
> around the symbols or having to explicitly put common-lisp functions
> in upper-case while the rest is in lower case.
>
> As a Lisp programmer none of these things appeal to me, and I
> certainly have no desire to adjust the existing Lisp code to satisfy
> this.
As long as we are only talking about maxima symbols (i.e., the symbols
that start with $), I don't see where this is a big deal. The maxima
parser already converts the user-defined symbol "x" to |$x|. We would
have to discuss the details for modifying the code, but Richard says he
already had a student do it, so I can't be that hard.
> Allegro has a "modern" mode where Lisp is case-sensitive, but no other
> Lisp that I know of has this. (They were thoroughly flamed on
> comp.lang.lisp for making that the default, and now the default is the
> ANSI standard version.)
As far as I know, all common lisp implementations support case-sensitive
mode through readtable case. It's been part of the standard since CLTL1.
However, I wouldn't use a non-standard readtable case if you paid me, so
it isn't really an issue.
> I suppose we could play games with Lisp packages so that maxima
> functions and variables in certain Lisp packages would get treated
> specially by maxima's input parser and display engine.
>
> That would be a pain too.
The input parser already does what it needs to. Actually, all we have to
do is to get it do *less.* It currently checks to see if an uppercase
version of a symbol exists before allowing it to be lower case. We can
just take that part out.
--Jim