[squeak-dev] IdentitySet>>collect:
David T. Lewis
lewis at mail.msen.com
Sat Nov 29 20:27:52 UTC 2014
On Sat, Nov 29, 2014 at 03:55:57PM +0100, Levente Uzonyi wrote:
>
> On Fri, 28 Nov 2014, tim Rowledge wrote:
> >
> >On 28-11-2014, at 6:05 PM, Levente Uzonyi <leves at elte.hu> wrote:
> >
> >>I think the conclusion was that it's better to leave the method as it is,
> >>because there's no better way to do it.
> >
> >There?s *always* a better way to do it. Somebody just has to think about
> >it the right way.
>
> There are too many factors for a better solution to exist.
> Let's say we change the method to return a Bag. Some will say it's better
> that way, because the resulting collection has the same size as the
> original.
> And some people will say that you broke their code, because the following
> will return false instead of true:
>
> | s t |
> s := #(1 2 3) asSet.
> t := s collect: [ :each | each ].
> s = t
>
> IMHO the best solution is still to replace sends of #collect: with
> #collect:as:, but it's a lot of work.
I like your argument for making it explicit. How about if we make it
explicit like this:
anIdentitySet collect: [:e | ... ] as: Set
This would avoid the surprising behavior of having #collect: answer
a collection of size different from that of the original collection.
Dave
More information about the Squeak-dev
mailing list
|