On Thu, Nov 13, 2008 at 03:46:58AM +0900, Charles Oliver Nutter wrote: > At that point I think we gain very little over arrays of arrays, since > we have to walk Parameters of Parameter(s) in almost exactly the same > way... That depends on what what you want to do with the structure. In: class Foo define_method(:foo) { |a, (b, c), d| p a, b, c, d } end I can still find out whether the 3rd parameter (d) is required with: params = Foo.method(:foo).parameters p params[2].required? vs: p params[2][0] == :req or I can find out if it is optional with: p params[2].optional? vs: p params[2][0] != :req Paul