schneik / us.ibm.com wrote:

> Dave Thomas wrote:
>
> # Mark Slagell <ms / iastate.edu> writes:
> #
> # > At first glance, I like the idea of any/all -- they seem to have broad
> # > applicability.
> # >
> # > Alternative name suggestions: "any_satisfies" and "all_satisfy" are
> # > more descriptive but a bit long - maybe just adding question marks
> # > would be good: "any?" and "all?".
> #
> # I like any? and all? We might want to make 'exists?' an alias for
> # 'any?', and 'none?' == '!all?'.
>
> And 'some?' for 'any?' as well, to complement 'none?'.
>
> # Could I also vote for 'count'
> #
> #     thing.count { |i| i > 3 }
>
> Yes, we'll count that as a vote. :-)  Make that two votes.
>
> # Then... do we add it to Enumerable, so do we put it in a separate
> # library
> #
> #    module Enumerable
> #       include Existential
> #
> #   end
> #
> # Why do this? Two reasons. First, it avoids cluttering Enumerable
> # (that's a poor reason). The second is that we get to play with it
> # before committing changes to the interpreter.
>
> Which means that people will likely play with a substantially wider range
> of potentially useful things than otherwise, which is desirable for
> maximally improving Ruby.
>
> # I'm thinking that we
> # implement it in Ruby, and put the source in lib/. We then see if it is
> # useful and if it is actually used. If so, and if the performance hit
> # of implementing it in Ruby proves to be too great, we can then move it
> # in the the C source.
> #
> # In general, I'm thinking that this is a good way to do all kinds of
> # new features: implement them first in Ruby before adding bulk to the
> # interpreter.
>
> Conrad Schneiker
> (This note is unofficial and subject to improvement without notice.)

This is a nice series of operators.
any?  == "there exists"
all? == "all"
I think it's missing a "there exists a unique x such that"

However, if one starts getting into lazy evaluation, please remember that the
second order propositional calculous is undecideable.  Or am I assuming to
broad an applicability for these operators?