Subject: keywords in Common Lisp and (MIT) Scheme
From: Erik Naggum <erik@naggum.no>
Date: 25 Jan 1995 07:05:19 UT
Newsgroups: comp.lang.lisp
Message-ID: <19950125T070519Z.enag@naggum.no>

some Scheme implementations allow keyword arguments in lambda lists, such
as MIT Scheme.  the keywords are distinguished from other symbols by a
trailing colon.  this notation has been picked up by Draft International
Standard 10175 Document Style Semantics and Specification Language (DSSSL).
I have written some Common Lisp code to process SGML documents, and thought
I'd try my hand at some DSSSL implementation, since the two standards are
intimately connected.  however, this has clashed with a most annoying and
exceedingly trivial little problem.

a trailing package marker (:) in a symbol, as in foo:, causes `read' to
signal an error, as CLtL2 (p 521) indicates it should.  however, ANSI CL
2.3.5 (5) says undefined patterns including the package marker are reserved
for implementation-dependent use.  well, that's not entirely bad if I can
find a way to do it.

is there a reasonable way I can convince the Lisp reader that a trailing
colon is not really a major disaster, but largely equivalent to a keyword?
I have been messing with the reader before, with moderate success, but this
one seems to be out of my league.  I can disable the colon as the package
marker, and instead look for a trailing colon in all my symbols, but if I
do this, I have to implement substantial parts of the reader myself, as I
can't get into its internals sufficiently to just fix this minor problem.

do others do this, or do they switch to Scheme just because of a colon
problem?

#<Erik>
-- 
miracle of miracles.  look what the Net dragged in.