janet-lang / janet

A dynamic language and bytecode vm
https://janet-lang.org
MIT License
3.43k stars 221 forks source link

Update `any?`, `every?` #1257

Closed primo-ppcg closed 1 year ago

primo-ppcg commented 1 year ago

Updates any? and every? to be exact functional analogues to or and and.

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.

sogaiu commented 1 year ago

It wasn't really in real-world usage, but FWIW I did make this change after this PR got merged.