From the 0.6.2 documentation
isequal is the comparison function used by hash tables (Dict). isequal(x,y) must imply that hash(x) == hash(y).
This typically means that if you define your own == function then you must define a corresponding hash (and vice versa). Collections typically implement isequal by calling isequal recursively on all contents.
Based on the first sentence you’d think that the default implementation of isequal is
isequal(x,y) = hash(x) == hash(y)
But the various implementations in Base do something completely different. Why is that?
Also, the documentation says “if you define your own == function then you must define a corresponding hash”.
Did it mean to say “if you define your own isequal function then you must define a corresponding hash”?