Subject: bug#17296: Uh, wrong?

From: Mark H Weaver <[email-masked]>
Date: Mon, 22 Sep 2014 13:34:42 -0400

Mark H Weaver <[email-masked]> writes:

> The fact that the SRFI-1 reference implementation of 'length+' is lax
> very nearly swayed me over to your position, but there's a problem:
> Guile's 'length+' has (always?) returned #f for dotted lists.  It would
> be dangerous to silently change the behavior of this case from one
> non-error to another non-error.  Programs could start silently
> misbehaving without any clue that anything went wrong.

BTW, I looked at the discussion archive for SRFI-1 looking for wisdom
about whether we should eventually make 'length+' lax or not.  I
discovered that Olin Shivers (SRFI-1 author) was in favor of making
essentially all SRFI-1 procedures tolerant of dotted lists, a position
he expressed concisely as "everything is a list", since non-null
non-pairs such as "foo", 2, and even? are naturally regarded as dotted
lists of length 0.

It turns out that he was overwhelming overruled on this.  Some of the
most respected people in the Scheme world agreed it was a bad idea, and
in fact not a single other participant agreed with him.

So he grudgingly changed the spec to reflect the consensus, but he left
his reference implementation as he preferred.

A good summary of the reasons against Olin's preference was given here:

  http://srfi.schemers.org/srfi-1/mail-archive/msg00052.html

If you're curious, here's a threaded index of the entire discussion:

  http://srfi.schemers.org/srfi-1/mail-archive/threads.html

Search for "Everything is a list" for Olin's position, and the threads
following "Re: SRFI-1 round 3 discussion", where Olin tried to defend
his position, then tried to sell a compromise, and finally gave in
completely.

    Regards,
      Mark