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

(LET ((var)) ...) and (PROG ((var)) ...)

There seems to be an inconsistency in CLtL regarding the syntax of the
variable lists in LET and PROG.  On page 110 the syntax for LET is

	LET ( { var | (var value) }* ) ...

while on p.131 the syntax for PROG is

	PROG ( {var | (var [init]) }* ) ...

This indicates that (PROG ((FOO)) ...) is allowed as a synonym for (PROG
((FOO NIL)) ...) and (PROG (FOO) ...).  However, in the first paragraph
on p.132 it says that the PROG variable list "is processed exactly as
the list in a LET statement...."

Since the syntax descriptions aren't identical, they can't actually be
processed exactly the same.

Symbolics Common Lisp and KCL allow (var) in both LET and PROG.  Sun CL
2.0.3 (on a Sun-3) gets an error for both (LET ((FOO))) and (PROG
((FOO))), and Sun CL 2.1.1 (on a Sun-4) and Lucid CL 2.1 give warnings
for LET but allow PROG silently.

Has this been addressed by any of the cleanup issues in the past?  If
not, what's the right way to solve this?