In our #Clojure meeting today we demonstrated and discussed nil/null as the dirty boolean value, especially baked in to SQL. If your boolean allows null, it is actually a trilean. But we have a stakeholder who wants "null" to indicate "you haven't filled this in yet; look here!" It's when the dirty booleans sneak up on you that you really need to watch out. And yes, we did discuss the optional third arg of #Clojure getter functions, for when your business logic needs to know whether its NOT THERE vs when its just FALSEY.