Issue #12902 has been updated by Akira Tanaka.

Status changed from Feedback to Rejected

Jeremy Daer wrote:
> If we treated the first argument to `#sum` as the additive identity instead of "initial element," then it'd be very clear what to expect:

I like current behavior than yours because the behavior can be explained simpler:
Enumerable#sum returns initial + elem0 + elem1 + ... elemN.
No need to distinguish empty and non-empty enumerable.

Yours needs more complex explanation.

> Plus, it's backward compatible, doesn't break existing behavior.

Enumerable#sum and Array#sum is defined in many gems with different behaviors.
Perfect backward compatibility is impossible.


----------------------------------------
Feature #12902: How about Enumerable#sum uses initial value rather than 0 as default?
https://bugs.ruby-lang.org/issues/12902#change-61457

* Author: Aaron Lasseigne
* Status: Rejected
* Priority: Normal
* Assignee: 
----------------------------------------
In https://bugs.ruby-lang.org/issues/12217#note-3, Akira Tanaka, mentions that the default argument to sum is 0. This creates problems with non-numeric summations (e.g. strings). This would make the method more flexible. It also makes it behave more like `reduce`. I think using the initial value in the enumerable is less surprising than using 0.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>