Hi Stef, Would it make sense to put the collection extensions from Moose in the Container project?
Cheers, Doru > On Nov 26, 2016, at 12:11 PM, stepharo <steph...@free.fr> wrote: > > Hi Sven > > I'm collecting alternative Collection implementations in the project Container > I do not remember if I have linkedList but we can add it there. > > You may wonder why I'm doing that? > - I want to be able to have strong collections that are independent > from the kernel > - Ideally the kernel of Pharo should be mininmal so it means that I > would like to > have as few as possible as collections inside the bootstrapped kernel > and that other collections are nicely packaged in Container. > > Now I can understand that others do not like what I'm doing but I will just > continue. > I have Grid, LinkedList, DoubleLinkedList, > I have on my disc > two implementation of Trees > I should harvest BTrees and SkipList. > > If people want to help they are welcome, else I will just do it alone. > > Stef > >> Hi, >> >> There exists a very elegant algorithm to detect cycles in linked lists. >> >> https://en.wikipedia.org/wiki/Cycle_detection#Tortoise_and_hare >> >> I know that our LinkedList was written with the assumption that there are no >> cycles. However, it seems to me that it would be nice to have a test to >> check for cycles. This could be useful while printing or inspecting a >> LinkedList (and prevent things from blowing up when there is a cycle). >> >> Here is the implementation: >> >> LinkedList>>#containsCycle >> | slow fast | >> slow := fast := firstLink. >> [ slow notNil and: [ fast notNil and: [ fast nextLink notNil ] ] ] >> whileTrue: [ >> slow := slow nextLink. >> fast := fast nextLink nextLink. >> slow == fast >> ifTrue: [ ^ true ] ]. >> ^ false >> >> And one of the tests: >> >> LinkedListTests>>#testCycles >> 1 to: 42 do: [ :each | >> list := LinkedList withAll: (1 to: each). >> "Warning: the following statement creates a cylce, >> inspecting/viewing list will probably fail" >> list lastLink nextLink: list firstLink. >> self assert: list containsCycle ] >> >> Opinions ? >> >> Sven >> >> > > > -- > Using Opera's mail client: http://www.opera.com/mail/ > -- www.tudorgirba.com www.feenk.com "Not knowing how to do something is not an argument for how it cannot be done."