Jeff M. wrote:
> The first is a play off an older Lisp implementation I read about
> (can't remember the name of the implementation, but I'm sure someone
> here knows). It would be setting #\] to close all open lists:
I think this might well be InterLisp, although I'm not sure. It
certainly had a fair amount of clever `helpful' syntax like this.
To do this, I think you need to change the read macro for #\(, and
this will be exciting and difficult. In particular it's hard because
you don't have access to what #\( actually does as a function -
READ-DELIMITED-LIST is crucially *not* it, because it does not handle
dotted lists at all. And what you want is something more than even a
generalised version of READ-DELIMITED-LIST. There is something about
this sort of issue (as a result of a huge and futile discussion on cll
a couple of years ago) at
http://www.tfeb.org/lisp/obscurities.html#RDL. I think that (although
it doesn't solve your problem) the READ-DELIMITED-FORM I suggest there
would be a good addition to CL.
> [a b c] => (a b c)
>
> Instead of having to use '( ). There is no particular reason for this
> other than to learn from doing it. I've made character macros for #/
> ... / (my regular expression macro reader) which works just fine, but
> each of these involves using the reader to parse more instead of just
> reading characters from the input stream.
This is easier - READ-DELIMITED-LIST will do this. But again, watch
out for, say [a b . c] - do you want that to work? If so you need
READ-DELIMITED-FORM.
--tim
In article <··········@odak26.prod.google.com>,
"Tim Bradshaw" <··········@tfeb.org> wrote:
> Jeff M. wrote:
> > The first is a play off an older Lisp implementation I read about
> > (can't remember the name of the implementation, but I'm sure someone
> > here knows). It would be setting #\] to close all open lists:
>
> I think this might well be InterLisp, although I'm not sure. It
> certainly had a fair amount of clever `helpful' syntax like this.
I remember seeing this use of #\] in FranzLisp programs of
the 1980s. (FranzLisp was more MacLispy than InterLispy.)