Here's another cool little corner case around nil:

In PicoLisp, you can take the CAR and CDR of nil, and they both detect as nil! That sounds really helpful - you don't throw errors, just get a handy 'no value inside' value.

Except PicoLisp doesn't *define* nil as (nil . nil), otherwise ((())) would be (()) would be () and that breaks S-expressions.

So PicoLisp nil both == and != (nil . nil). Wheee!

@natecull For what it's worth, Clojure does this:

> (first nil)
nil
> (second nil)
nil
> (rest nil)
()

I'm not sure what to think about the result of `(rest nil)`; it doesn't sound very consistent.

@nikola wait, are nil and () distinct values in Clojure? That seems... odd, coming from Scheme.

@natecull Yep, pretty much:
> (= '() nil)
false

I believe that's at least partly due to the interop with the JVM.