I have a passing knowledge of other Lisps (particularly Scheme) from way back. Recently I\'ve been reading about Clojure. I see that it has both \"symbols\" and \"keywords\"
For keywords, hash values are calculated and cached when the keyword is first constructed. When looking up a keyword as a hash key, it simply returns the precomputed hashed value. For strings and symbols, the hash is recalculated on every lookup.
The why same named keywords are always identical, they contains their own hash values. As search in maps and sets are made from hash keys this envolves better search efficiency in case of numerous searches, not in the search itself.