Hi Zefram, this is an interesting issue. Here's a related one:
https://bugs.gnu.org/48318 I think first of all #nil and '() should actually be equal? to each other. After all, both represent the empty list, and checking structural equality between lists is one of the common uses of equal?. It might also be good, in addition, to make the Scheme writer write (foo . #nil) as (foo . #nil). The positive is that it would make bugs in Elisp compatibility easier to see by not masking the fact that one has #nil instead of () at the end of a list. The only negative I can think of is that it would be mildly annoying to see (foo bar . #nil) where you expected to see (foo bar), but I don't think that's ever really harmful. Thoughts? - Taylan