Large Clojure codebases can become nasty, just as in any other dynamic language. Fortunately, Clojure isn't as problematic as some other languages because it is partially inspired by ML. True, it doesn't have static typing, but the way Clojure treats nil allows us to get very close to the ML way. In Haskell and other ML-ish languages, the Maybe type represents either Nothing or Just <some_value>.