> The main problem here is that Array#to_s calls join with the default 
> field separator, which for some reason is "".  To me, this isn't 
> intuitive.  Is there some historical reason why this behavior exists?  
> Even less intuitive to me is Hash#to_s, because the way the conversion 
> is done you lose any concept it was a hash.

It's intuitive because it's the opposite of taking a string and putting
each character as an element of an array.

"foobar" -> ['f','o','o','b','a','r'] -> "foobar"

If you want a different .to_s you can just join with something else.
It's pretty easy to just do  foobararray.join(',') if you want
"f,o,o,b,a,r", and additionally it's a little easier to read.

-Kurt