I have a group of classes, all implementing a parse?() class method.   
Calling parse?(token) will return the constructed object, if it can  
be parsed by this class, or false otherwise.

I want to run a bunch of tokens through these classes, grabbing the  
first fit.  For example:

   elements = tokens.map do |token|
     ClassA.parse?(token) or
     ClassB.parse?(token) or
     ClassC.parse?(token)
   end

That works.  Now can anyone give me a version of the middle section  
that doesn't require I call parse?() 50 times?  I want something  
close to:

   elements = tokens.map do |token|
     [ClassA, ClassB, ClassC].find { |kind| kind.parse?(token) }
   end

Except that I want the return result of parse?(), instead of the  
class that took it.

Thanks for any tips you can offer.

James Edward Gray II