Daniel Finnie wrote: > How this would work: > Currently, the following would default to "i" if the element doesn't exist. > [4, 6, 9].fetch(4, "i") > This would do the same thing: > [4, 6, 9][4].default("i") or [4, 6, 9].fetch(4).default("i") I get along fine with: [4, 6, 9].fetch(4)||'i' Sure, it has false misses on instances of FalseClass, but I live with the pain. Besides, what if the above array contained nil? > This would allow things like: > ary = [4, nil, 6, nil] > ary.select{|x| x.nil?}[1].set(2) > ary # => [4, nil, 6, 2] May I suggest: ary.select{|x| x.nil?}[1] = 2 as a better interface. = isn't overridable, but []= is. I see more potential in your second thing... Build it as a stand-alone Ruby library first. Devin