Subject: Re: recompiling Maxima with ABCL (Lisp implemented in Java)
From: rpw3@rpw3.org (Rob Warnock)
Date: Wed, 14 Jun 2006 04:09:29 -0500
Newsgroups: sci.math.symbolic,comp.lang.lisp
Message-ID: <1KadnYETlqzUTxLZnZ2dnUVZ_uidnZ2d@speakeasy.net>
Robert Dodier <robert.dodier@gmail.com> wrote:
+---------------
| compiling problems: ABCL compile-file doesn't seem to like setq with
| multiple arguments. I worked around that by changing (setq a b c d)
| to (setq a b) (setq c d).
+---------------

You should file an ANSI-non-compliance bug with the maintainers.

+---------------
| Also ABCL didn't recognize #\vt (vertical tab).
| I don't know if #\vt is a non-CL thing.
+---------------

It's an extension to ANSI, but most CLs do recognize it (CLISP,
CMUCL, etc.). CLHS 13.1.7 "Character Names" says that the only
*required* named characters are #\Newline" and #\Space, with
#\Rubout, #\Page, #\Tab, #\Backspace, #\Return, & #\Linefeed
being:

    ...semi-standard; if an implementation supports them,
    they should be used for the described characters and
    no others.

And CLHS 22.1.3.2 "Printing Characters":

    If a non-graphic character has a standardized name[5], that name
    is preferred over non-standard names for printing in #\ notation.
    For the graphic standard characters, the character itself is
    always used for printing in #\ notation---even if the character
    also has a name[5].

Finally, CLHS "Glossary: N: name[5]" says:

    ... (All non-graphic characters are required to have names unless they
    have some implementation-defined attribute which is not null. Whether
    or not other characters have names is implementation-dependent.)

But except for the standardized and semi-standard names above, those
names might be different in different implementations. For example,
in (an old version of) CLISP:

    > (loop for i to 32 collect (code-char i))
    (#\Null #\Soh #\Stx #\Etx #\Eot #\Enq #\Ack #\Bell #\Backspace
     #\Tab #\Newline #\Vt #\Page #\Return #\So #\Si #\Dle #\Dc1
     #\Dc2 #\Dc3 #\Dc4 #\Nak #\Syn #\Etb #\Can #\Em #\Sub #\Escape
     #\Fs #\Gs #\Rs #\Us #\Space)
    > 

Whereas in CMUCL:

    > (loop for i to 32 collect (code-char i))
    (#\Null #\^A #\^B #\^C #\^D #\^E #\^F #\Bell #\Backspace #\Tab
     #\Newline #\Vt #\Page #\Return #\^N #\^O #\^P #\^Q #\^R #\^S #\^T
     #\^U #\^V #\^W #\^X #\^Y #\^Z #\Escape #\Fs #\Gs #\Rs #\Us #\ )
    > 

[Hmmm... Since (graphic-char-p #\space) ==> T in both, by 22.1.3.2
it would seem that CMUCL is more correct in printing space as "#\ "
instead of "#\Space". Oh, well...]


-Rob

-----
Rob Warnock			<rpw3@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607