irb(main):021:0> a = []; a << a
=> [[...]]
irb(main):022:0> b = []; b << b
=> [[...]]
irb(main):023:0> a == b
SystemStackError: stack level too deep

I expected a result of true. Am I expecting too much? It might be hard 
(or costly) to get this behavior. Array#== could remember (by calling 
another function and passing along a hash argument throughout the 
recursion) which pairs it has already compared...

This happens in 1.7.3 and 1.8.0.

I'm just asking out of curiosity.