thanks for the comments from yashi and dave!  
frankly, this is not really a complete proposal, it is just a crude
implementation to explore the idea :)

Yashi said:
> i don't have any objection for 'any?' and 'all?'.
> 
> but, seems to me 'any' and 'all', or class Quantum is implicitly
> assuming each object given to the receiver is class of Numeric.
> 
> if class Quantum is assuming class Numeric, and method any and all is
> assuming class Quantum, IMHO, they shouldn't be in the module
> Enumerable.
> 
> [...]

I probably misunderstand your comments here, but I am not limiting it 
to only Numeric. when I tried the following, it works!

p ['a','c'].any > 'b'         # true
p ['a','c'].all > 'b'         # false

> > ###  the following is still illegal :(
> > 
> > # a = 2 * [1,2,3]
> > # b = 2 > [1,2,3].any
> 
> these will work if you give a method called coerce.  but again, I'm
> not sure we are assuming Numeric as core object or not.

thanks, and surely now we have 
p 2 > [1,2,3].any     # true
p 2 > [1,2,3].all     # false

however, I can't do it for string

p 'b' > ['a','c'].any
p 'b' > ['a','c'].all

I do not understand.  and using coerce rather than my original 
implementation give different results:

Using my original implementation:
p [1,2,3].any < [2,5,6].all     # true

It print out "false" using yashi's implementation.

> btw, i'm not sure it's ok to swap self and other in method coerce.  if
> we can define Quantum#*, you can use it. but...
> 
> one more thing.  IMHO, it's better to use Symbol rather than String
> for @method.

thank you very much for commenting.


I also modified the method_missing method in Quantum to:

  def method_missing(id, *arg)
    @states.collect! { |x| x.send(id, *arg)}
    self
  end

so now it will also do this:

p ['abc','df'].any.size > 2      # true
p ['abc','df'].all.size > 2      # false
p ['abc','df3'].any[1,2] > 'be'   # true