A Short Ballad Dedicated to the Growth of Programs

December 10, 2011

This is a cautionary tale set in a dystopian Lisp where nil is not false and false is not nil.

So I went back to the master and appealed once again
I said, pardon me, but now I’m really insane
He said, no you’re not really going out of your head
Instead of just VAL, you must use NOT NULL instead

nil means (traditionally) false, the empty list, and also "no value". In my opinion, Lisp has hit a sweet spot. Somehow, nil overloading makes for succinct programs.

It's possible to go overboard and do this wrong. Case in point: the problems with boolean values and comparison in Javascript.