Updates any? and every? to be exact functional analogues to or and and.
any? returns the final value if all preceding values are falsey, rather than nil.
every? returns the final value if all preceding values are truthy, rather than true.
I believe this makes their definitions more coherent. any? would sometimes return an element from the collection (if it were truthy), and sometimes nil. every? would sometimes return an element from the collection (if it were falsey), and sometimes true. After, each will always return an element from the collection.
As their meaning will not have changed when used as a predicate, I believe these changes can be made with minimal fallout. every? in particular is much more useful this way. Because of the spatial separation in the documentation, I have duplicated the docstrings from or and and.
For the interested, the implementation is approximately 10% faster for each.
Updates
any?
andevery?
to be exact functional analogues toor
andand
.any?
returns the final value if all preceding values are falsey, rather thannil
.every?
returns the final value if all preceding values are truthy, rather thantrue
.I believe this makes their definitions more coherent.
any?
would sometimes return an element from the collection (if it were truthy), and sometimesnil
.every?
would sometimes return an element from the collection (if it were falsey), and sometimestrue
. After, each will always return an element from the collection.As their meaning will not have changed when used as a predicate, I believe these changes can be made with minimal fallout.
every?
in particular is much more useful this way. Because of the spatial separation in the documentation, I have duplicated the docstrings fromor
andand
.For the interested, the implementation is approximately 10% faster for each.