[squeak-dev] OrderedSet

Levente Uzonyi leves at caesar.elte.hu
Tue Dec 4 00:30:44 UTC 2018


Hi Bernhard,

On Thu, 29 Nov 2018, Bernhard Pieber wrote:

> Hi Levente,
>
> I like that idea! Performance is a non-issue for my use case. I don't even have the need to remove elements. 
>
> Are there any objections to include OrderedSet as a trivial subclass of OrderedDictionary to Squeak?

I'm not sure if it belongs to the Trunk. It's pretty much a niche 
collection, though I was thinking the same about OrderedDictionary.
If I were to add it to the Trunk, I would implement it as a subclass of 
Set instead of OrderedDictionary, because OrderedSet doesn't need the 
methods provided by OrderedDictionary.

>
> I have looked at the list implementation used in LRUCache. I love the terseness of the code. I wonder why it is not called CircularDoublyLinkedList to make it easier to find for other uses.

Because I added it to improve LRUCache, and in practice the list nodes are 
the best if they can be used as a mixin or a stateful trait, but Squeak 
has neither of those.

Levente

>
> Bernhard
>
>> Am 28.11.2018 um 18:48 schrieb Levente Uzonyi <leves at caesar.elte.hu>:
>> 
>> That OrderedSet is not really a set, just a thin wrapper over OrderedCollection, so performance will be surprisingly bad.
>> Squeak has OrderedDictionary which has all the methods a Set needs:
>> #at: anObject put: nil <=> #add: anObject
>> #includesKey: anObject <=> #includes:anObject
>> #keysDo: aBlock <=> #do: aBlock
>> #removeKey: anObject <=> #remove: anObject
>> 
>> Note that removal will take O(size) time. If you need anything better, you have to implement your own set (e.g. a linked hash set. Squeak's LRUCache has a list implementation that can come handy).
>> 
>> Levente
>> 
>> On Tue, 27 Nov 2018, David T. Lewis wrote:
>> 
>>> Thanks Benoit,
>>> 
>>> The repository is http://www.squeaksource.com/PharoTaskForces, the package
>>> is OrderedSet, and the latest version is OrderedSet-StephaneDucasse.2.mcz
>>> 
>>> Dave
>>> 
>>> On Wed, Nov 28, 2018 at 01:06:49AM +0000, Benoit St-Jean via Squeak-dev wrote:
>>>> Your link doesn't work either.
>>>> Go to ProjectsType OrderedSet in the search box.Only one result will come up (as PharoTaskForces)!If you click on that and browse the versions, you'll see the OrderedSet packages!
>>>> ----------------- Beno??t St-Jean Yahoo! Messenger: bstjean Twitter: @BenLeChialeux Pinterest: benoitstjean Instagram: Chef_Benito
>>>> IRC: lamneth Blogue: endormitoire.wordpress.com "A standpoint is an intellectual horizon of radius zero".?? (A. Einstein)
>>>>    On Tuesday, November 27, 2018, 7:58:38 p.m. EST, David T. Lewis <lewis at mail.msen.com> wrote:
>>>> 
>>>> That link does not work, but there is an OrderedDictionary project on
>>>> at http://www.squeaksource.com/TFOrderedDictionary.html. It that it?
>>>> On Wed, Nov 28, 2018 at 12:08:06AM +0000, Benoit St-Jean via Squeak-dev wrote:
>>>> > There's that on SqueakSource.
>>>> > http://squeaksource.com/@Ilyu71XtQNt-3Xwp/UMBrp13p
>>>> > ----------------- > Beno??t St-Jean > Yahoo! Messenger: bstjean > Twitter: @BenLeChialeux > Pinterest: benoitstjean > Instagram: Chef_Benito
>>>> > IRC: lamneth > Blogue: endormitoire.wordpress.com > "A standpoint is an intellectual horizon of radius zero".?? (A. Einstein) > >?? ?? On Tuesday, November 27, 2018, 5:18:51 p.m. EST, Bernhard Pieber <bernhard at pieber.com> wrote:?? >?? >?? Hi Squeakers,
>>>> > > Does anyone know of an OrderedSet implementation for Squeak somewhere?
>>>> > > Bernhard
>>


More information about the Squeak-dev mailing list