Subject: Re: How Common Lisp sucks
From: (Rob Warnock)
Date: Fri, 21 Apr 2006 22:04:17 -0500
Newsgroups: comp.lang.lisp
Message-ID: <>
Duncan Harvey <> wrote:
| Bill Atkins <> wrote:
| > Christophe Rhodes <> writes:
| > > Peter Seibel <> writes:
| > >> I can't think, offhand, of any areas where implementations
| > >> intentionally deviate from the spec with no intention of
| > >> fixing it when they get around to it.
| > >
| > > PROG2.
| > 
| > What does this mean?
| PROG2 is specified as being equivalent to PROG1.  See the Description at
| <>:
| |   prog2 evaluates first-form, then second-form, and then forms,
| |   yielding as its only value the primary value yielded by first-form.
| This is usually regarded as an accident and an error.  Consequently
| implementations write it as people expect rather than as specified.
| (But not all of them document their wilfully deviant behaviour...)

But the "Syntax:" & "Arguments and Values:" sections *above* the part
you quoted strongly supports the interpretation that the "Description:"
text is the typo "accident", since the former two say this:

    prog2 first-form second-form form* => result-2
    result-2---the primary value resulting from the evaluation of second-form

So returning the second-form *IS* "as specified", if you take the
specification in the syntax/args section as being definitive rather
than the conflicting description text.

Unfortunately, neither "1.4.4 Interpreting Dictionary Entries"
nor "1.4.3 Sections Not Formally Part Of This Standard" deals
with the proper interpretation between conflicting texts which
*are* all formally part of the standard.[1]  So we have these
silly arguments, even when it's *obvious* which is correct...  ;-}


[1] Well, " Resolution of Apparent Conflicts in Exceptional
    Situations" covers one case, but that's not germane here.

Rob Warnock			<>
627 26th Avenue			<URL:>
San Mateo, CA 94403		(650)572-2607