Hi,

In message "[ruby-talk:01092] Re: Infinite loop"
    on 00/01/11, Clemens Hintze <clemens.hintze / alcatel.de> writes:

|> Exactly - it just seems inconsistent, but as I mentioned originally, I 
|> don't think it's necessarily a bug ;-)
|
|But here we differ in opinion! In my eyes, this *is* necessarily a
|bug!

I agree.  This is a bug.

Here's two option to solve this.  Which do you prefer?

  (a) like Array#inspect, Array#hash can use rb_protect_inspect() and
      rb_inspecting_p() to detect cycles.

  (b) change the behavior of Array#hash not to traverse items
      recursively. e.g.

         def hash
           h = self.id
           for item in self
             h ^= item.id
           end
           h
         end

Both are real eacy to implement.  I prefer latter.

							matz.