> Is it valuable to implement such function?

Yes. Even if it simply returned a constant for the degenerate case.
(I'd rather a collision than an exception). To me, #hash is an
integral part of Ruby objects. Having it raise with specific instances
of a couple of classes just feels broken to me.

Again, though, I'd prefer that the policy question be addressed before
a fix is determined. Is it desirable that recursive values be allowed
yet raise when standard methods are called on their container?