Perhaps instead of

   all_people.select(&:retired?)

select could return a functor --in this case an enumerator:

   all_people.select.retired?

And in fact I believe this functionality is in 1.9 already. It works
with all enumeratable methods and methods of classes that serve the
same purpose. I think it could be further generalized though for any
method accepting a block. For:

  def foo(&blk)

then

  foo.bar

translates into

  foo { |x| x.bar }

(It may require the ability to sepcify manditory blocks though, like I
brought up in another recent thread)

T.