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.)