Re: #f and '()

Paul R. Wilson (wilson@cs.utexas.edu)
Fri, 9 Aug 1996 12:17:49 -0500

>From guile-owner@cygnus.com Fri Aug 9 11:59:59 1996
>
>Perhaps another way of looking at it is to ask what comparable systems
>do. For example, do the following systems distinguish #f and '(): scsh,
>elk, Stk, es?

There's a near-consensus in the Scheme community that distinguishing
#f and '() is a good thing.

I think (but am not sure) that all of those implementations distinguish
them. (I'm sure that scsh does, because it's based on Scheme-48,
which does distinguish them.) I'm also pretty sure that most if
not all of Chez, Gambit, and MzScheme distinguish them.

>If I had to make a gut decision about whether it was a good idea to
>distinguish or not, I'd say that it was a good thing: Scheme is about
>lists (and other things...), and the empty list ought to be
>distinguishable from the boolean false.

Yes. It makes type systems much cleaner. (This is good if you add
a strong type system, or if you use type inference.)

>But maybe I'm completely
>wrong, perhaps in practical terms (in a practical scripting and
>programming language) it doesn't matter much (certainly the obvious
>success of elisp suggests it doesn't).

This is my understanding of the GNU position. Emacs compatibility is
more important than a technically allowable incompatibility with the
way most Scheme systems work.

Personally, I'd rather distinguish #f and '(), but it really would make
it somewhat harder to interoperate with elisp. (I forget all the details
that were hashed out a long time ago.)