can you explain please? I don't understand, why the almost same code with dot special form and identity function has different results?
(. System getProperties) # => {"key" ...}
(. (clojure.core/identity System) getProperties) # => (err) No matching field found: getProperties for class java.lang.Class
I tried compare this:
(= (clojure.core/identity System) System) # true
and result is true
Static methods are special.
In the first case, the compiler sees that System
is a class and treats .
as a static method call (source).
In the second case, it treats .
as a regular call on an instance of some class, and System
is an instance of class Class
, hence that error.