I was playing around ranges of strings after that post about >'1'..'10'.include? '2 #=> false I found something else strange when I made a typo: irb(main):001:0> a = 1..10.to_a (irb):1: warning: default `to_a' will be obsolete ArgumentError: bad value for range from (irb):1 irb(main):004:0> a = '1'..'10'.to_a => "1"..["10"] irb(main):005:0> a.each{|i| p i} TypeError: cannot convert Array into String from (irb):5:in `each' from (irb):5 irb(main):006:0> a => "1"..["10"] irb(main):007:0> a.to_a TypeError: cannot convert Array into String from (irb):7:in `each' from (irb):7:in `to_a' from (irb):7 irb(main):015:0> r='1'..[10] => "1"..[10] irb(main):016:0> r.each{|i| p i} TypeError: cannot convert Array into String from (irb):16:in `each' from (irb):16 irb(main):017:0> r.include? [5] NoMethodError: undefined method `>' for false:FalseClass from (irb):17:in `include?' from (irb):17 Why can I create a Range where one end is a String and the other is an Array? I can't do anything with it. I get an error if I create an Fixnum..Array range, why don't I get one for the String..Array? -Adam