Doru,

> On 01 Dec 2015, at 15:11, Tudor Girba <tu...@tudorgirba.com> wrote:
> 
> Hi,
> 
>> On Dec 1, 2015, at 12:52 PM, Sven Van Caekenberghe <s...@stfx.eu> wrote:
>> 
>> 
>>> On 01 Dec 2015, at 12:45, Stephan Eggermont <step...@stack.nl> wrote:
>>> 
>>> On 01-12-15 11:46, Sven Van Caekenberghe wrote:
>>>> The basic question for me is, what should
>>>> 
>>>> #() sum
>>>> 
>>>> return. Right now, it is an error, I would very much like that for this 
>>>> common case the result would be 0. There is a lot of power (easy of use) 
>>>> in a unary selector, we should not destroy that with semantics that force 
>>>> a test before using it.
>>> 
>>> I like the error, it aligns with most of our collection protocol.
>> 
>> I hate the error, a lot ;-)
>> 
>>> It shows the need for #sum:ifEmpty: though
>> 
>> Yes, as long as #() sum == 0 
> 
> That won’t work :).

Why ? Please explain.

>> I want the simplest case to be simple, having a non-0 default is a special 
>> case IMHO
> 
> That is why you have sumNumbers:. We could also add Collection>>sumNumbers.
> 
> We had this discussion at length before Pharo 4, and this is when we agreed 
> to add sumNumbers: and let sum: be generic (like the name says it should be) 
> and not assume that it should work with Numbers.

It is not about numbers or not, you are still using #+ in your generic case, 
that is numeric in my book. It is about the zero element and how to deal with 
an empty collection.

The current solution, which was indeed recently added, leaves the problem of 
what to do with an empty collection. There is no general solution, you have to 
specify a zero element.

But for most people in most cases that will be effectively 0, so lets make the 
unary #sum respect that. (And unary #sum will also work for non-empty non-zero 
based objects). The less common case can then use the longer message.

> Cheers,
> Doru
> 
>> 
>>> Stephan
>>> 
>>> 
>>> 
>> 
>> 
> 
> --
> www.tudorgirba.com
> 
> "Speaking louder won't make the point worthier."


Reply via email to