[#56333] [CommonRuby - Feature #8723][Open] Array.any? predicate returns true for empty array. — "nurettin (Nurettin Onur TUGCU)" <onurtugcu@...>

12 messages 2013/08/02

[#56368] [ruby-trunk - Bug #8730][Open] "rescue Exception" rescues Timeout::ExitException — "takiuchi (Genki Takiuchi)" <genki@...21g.com>

15 messages 2013/08/04

[#56407] [ruby-trunk - misc #8741][Open] email notification on bugs.ruby-lang.org is broken — "rits (First Last)" <redmine@...>

18 messages 2013/08/05

[#56524] [ruby-trunk - Bug #8770][Open] [PATCH] process.c: avoid EINTR from Process.spawn — "normalperson (Eric Wong)" <normalperson@...>

19 messages 2013/08/10

[#56536] [ruby-trunk - Feature #8772][Open] Hash alias #| merge, and the case for Hash and Array polymorphism — "trans (Thomas Sawyer)" <redmine@...>

24 messages 2013/08/11

[#56544] [ruby-trunk - Bug #8774][Open] rb_file_dirname return wrong encoding string when dir is "." — jiayp@... (贾 延平) <jiayp@...>

10 messages 2013/08/11

[#56569] [ruby-trunk - Feature #8781][Open] Use require_relative() instead of require() if possible — "ko1 (Koichi Sasada)" <redmine@...>

31 messages 2013/08/12
[#56582] [ruby-trunk - Feature #8781] Use require_relative() instead of require() if possible — "drbrain (Eric Hodel)" <drbrain@...7.net> 2013/08/12

[#56584] Re: [ruby-trunk - Feature #8781] Use require_relative() instead of require() if possible — SASADA Koichi <ko1@...> 2013/08/12

(2013/08/13 2:25), drbrain (Eric Hodel) wrote:

[#56636] Re: [ruby-trunk - Feature #8781] Use require_relative() instead of require() if possible — Aaron Patterson <tenderlove@...> 2013/08/16

On Tue, Aug 13, 2013 at 07:38:01AM +0900, SASADA Koichi wrote:

[#56634] [ruby-trunk - Feature #8788][Open] use eventfd on newer Linux instead of pipe for timer thread — "normalperson (Eric Wong)" <normalperson@...>

11 messages 2013/08/16

[#56648] [ruby-trunk - Bug #8795][Open] "Null byte in string error" on Marshal.load — "mml (McClain Looney)" <m@...>

17 messages 2013/08/16

[#56824] [ruby-trunk - Feature #8823][Open] Run trap handler in an independent thread called "Signal thread" — "ko1 (Koichi Sasada)" <redmine@...>

14 messages 2013/08/27

[#56878] [ruby-trunk - misc #8835][Open] Introducing a semantic versioning scheme and branching policy — "knu (Akinori MUSHA)" <knu@...>

11 messages 2013/08/30

[#56890] [ruby-trunk - Feature #8839][Open] Class and module should return the class or module that was opened — "headius (Charles Nutter)" <headius@...>

26 messages 2013/08/30

[#56894] [ruby-trunk - Feature #8840][Open] Yielder#state — "marcandre (Marc-Andre Lafortune)" <ruby-core@...>

14 messages 2013/08/30

[ruby-core:56348] Re: [CommonRuby - Feature #8723] Array.any? predicate returns true for empty array.

From: "Martin J. Dürst" <duerst@...>
Date: 2013-08-03 08:00:39 UTC
List: ruby-core #56348
On 2013/08/03 15:40, nurettin (Nurettin Onur TUGCU) wrote:
>
> Issue #8723 has been updated by nurettin (Nurettin Onur TUGCU).
>
>
> I find I need to address all the questions

> However I find the result needs not be defined. Also, defining "all?" or "any?" makes no sense for empty set since they will never execute.

You say:

 > Also, defining "all?" or "any?" makes no sense for empty set since 
they will never execute.

So should be write code like

unless enum.empty?
    enum.all { |x| predicate(x) }
end

Think about this in a bigger context. Assume we are applying .any or 
.all not to a simple array, but to an array of arrays.

We would e.g. write

arrays.all { |a| a.all { |x| predicate(x) } }

If we use what we currently have in Ruby, this just works, even if there 
are some empty lists in the 'arrays' array. With your proposal, we'd 
have to write a lot of special code.

> ============
>
> Of course I understand that there are other languages which do this the same, I also understand that it would break existing code, and I know that docs are clear, and of course I can write my own, but is it really correct behavior to treat undefinedness as truth? In my opinion, no.

It would be incorrect behavior to treat undefinedness as truth, but the 
results of these operations are not undefined. They have a clear 
underlying mathematical background. People familiar with this area know 
what the results are, and they expect them to work the way they do. 
Anything else would be highly confusing for everybody except maybe 
beginners.

I suggest you read some introductory book in this area (discrete math). 
An alternative is to read a book on Haskell, especially one that 
discusses code transformations/equivalences and proofs.

Regards,   Martin.

In This Thread