[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: portable code walkers vs. portable code


> My contention is that it should be possible to write a portable program to 
> "walk" *any* valid Common Lisp program.


> But an implementation that includes syntactic extensions should not call
> itself "Common Lisp".

An *implementation* can provide anything it likes.  Provided it is
provably upward compatible with "Common Lisp", it is a valid Common
Lisp.  However, any *program* which uses these extensions cannot
correctly be called a "Common Lisp program".  A portable Common Lisp
code walker will work only for Common Lisp code.

This distinction is important if we are ever to nail down what is a
legitimate Common Lisp and what isn't.

> After all, this was the rationale for prohibiting implementations from
> defining their own additional special forms, right?  If you allow
> implementations to extend the syntax of lambda lists, you might as well
> let implementations extend the syntax by introducing more special
> forms, and let users define their own special forms too.

Implementations are free to provide additional special forms provided
they also make available macro equivalents.  Additional special forms
are no problem for code walkers.  (Provided the macro equivalents
really are functionally [sic] equivalent...)

Your argument is still a good one, that extending the syntax of lisp
forms makes impossible portable code analysis tools.  This should not
be done lightly, but it doesn't invalidate a Common Lisp.