On Tue, Dec 1, 2015 at 10:24 PM, Sven Van Caekenberghe <s...@stfx.eu> wrote: > 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.
https://en.wikipedia.org/wiki/Empty_sum