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