An optional type system for Clojure