From: andrew@... Date: 2016-02-27T13:59:18+00:00 Subject: [ruby-core:74023] [Ruby trunk Feature#12110] Create a method to avoid vacuous truth? Issue #12110 has been updated by Andrew Vit. Waldyr de Souza wrote: > I often find myself running into unexpected results when using #all? for example > > `[].all? { |e| false } # => true` If you expect all false, then why not use `none?`, is it not sufficient? > Even though it's logically correct could we have a method that express the following? > > `foo.any? && foo.all?(&:bar)` This also has edge cases, try: `foo = [nil]` Matthew Kerwin wrote: > I seem to recall someone suggesting 'any_and_all?' in the past. This makes sense and it's consistent with `foo.any?(&block) && foo.all?(&block)` This is still surprising to me, it looks like a contradiction: ``` [].any? #=> false [].all? #=> true ``` I would expect "all" to be a superset of "any": both should mean "at least one". Is there a reason for the existing behaviour, or is it just history now? ---------------------------------------- Feature #12110: Create a method to avoid vacuous truth? https://bugs.ruby-lang.org/issues/12110#change-57174 * Author: Waldyr de Souza * Status: Open * Priority: Normal * Assignee: ---------------------------------------- I often find myself running into unexpected results when using #all? for example [].all? { |e| false } # => true Even though it's logically correct could we have a method that express the following? foo.any? && foo.all?(&:bar) -- https://bugs.ruby-lang.org/ Unsubscribe: