identical? has been implemented to deal with value types specially.
Details:
clojure.core/identical? inlines as a call to Clojure.lang.Util.identical, defined as follows:
public static bool identical(object k1, object k2)
{
if (k1 is ValueType)
return k1.Equals(k2);
else
return k1 == k2;
}
On the JVM, the code is just k1 == k2. Too many things broke in CLR compared to JVM when the simpler code was used. But one does run into situations such as Guids where there is a discrepancy.