How does JVM type erasure help Clojure? Can Clojure exist without it? What would happen if the JVM had reified types? That is, how would Clojure change?
Clojure wouldn't change much at all. Type erasure only applies to Java's type-parameters for generics. All other types are available at runtime.
Browsing Clojure's source, it does not use generics much at all. In the runtime, it passes around Object
s and does instanceof
checks. By treating everything as an Object
, it has no need for generics, and thus, there are no type-parameters to be erased.