[Cuis-dev] Some more Bag tweaks

Luciano Notarfrancesco luchiano at gmail.com
Mon May 9 03:56:55 PDT 2022


Juan, please don't forget to look at the changeset in my previous mail when
you have time.

Here are some additional tweaks. I reimplemented
Collection>>#identityIncludes: using #allSatisfy: instead of #do:, in this
way it is fast for Bags too, and it mirrors the implementation of
Collection>>#includes:.

I also implemented a fast Bag>>#atRandom:, and implemented a general
Collection>>#atRandom:. Originally #atRandom: was not implemented in
Collection, so I implemented a generic version that only assumes the
collection understands #size and #do:.

Thanks,
Luciano

On Tue, May 3, 2022 at 7:54 AM Luciano Notarfrancesco <luchiano at gmail.com>
wrote:

> Here are some more methods that take advantage of the structure of a Bag
> (#allSatisfy:, #anySatisfy:, #max:, #min:, #sum:, etc).
>
> Also made some tweaks to some methods in Collection to call existing
> methods instead of reimplementing, in order to simplify the changes in Bag
> (otherwise. for example, I'd have to implement #sum, #sum: and
> #sum:ifEmpty: in Bag instead of only implementing #sum:ifEmpty). And I
> changed Collection>>#product to produce an error when the collection is
> empty instead of returning 1 (to be consistent with Collection>>#sum:).
>
> All base image tests pass, but please review.
>
> Also, while running tests I got a walkback on BitBltCanvasEngine, see the
> attached log.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20220509/446917db/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 5143-CollectionAtRandomAndIdentityIncludesTweaks-LucianoEstebanNotarfrancesco-2022May09-07h28m-len.001.cs.st
Type: application/octet-stream
Size: 1303 bytes
Desc: not available
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20220509/446917db/attachment.obj>


More information about the Cuis-dev mailing list