You mean without marking all the atoms as "object"? Clojure is written in Java and is dynamically typed. I experimented with statically typed linked-lists in Saccharin https://github.com/gilch/saccharin but ran into the limitations of Java's type system at the time. I couldn't figure out how to do certain list operations without losing the types.