Ben Coman wrote > On 31 December 2017 at 04:00, Andy Burnett < > andy.burnett@
> > > wrote: > >> I suspect I am missing something very obvious, in which case could some >> kind soul put me straight? >> >> I have the following code >> >> col := OrderedCollection new. >> (1 to: 9) permutationsDo: [ :each | col add: (each )]. >> >> I thought this would give me a collection containing all the >> permutations. >> However, what actually happens is that each of the arrays has been >> 'magically' sorted back into numerical order. If I change the code to >> read >> >> col := OrderedCollection new. >> (1 to: 9) permutationsDo: [ :each | col add: (each asOrderedCollection >> )]. >> >> Then the permutations are retained. Is this how it is supposed to work? >> Or, am I doing something wrong? >> >> Cheers >> Andy >> > > > Its not so much that your first example sorted the permutations, but that > the collection contained only one permutation. > I've swapped the order of your examples and downsized them to the simplest > case to observe. > Something seems broken. It works as expected if the "copy" is > uncommented. It's not broken, but certainly deserves a comment as to why it operates inline; In the general case, one should not use/care about any given permutation outside the block. Allocating n! instances of an n-sized array by default, is a bad tradeoff considering performance degradation for uses where n >> 3. In the first case, a user can add a simple #copy, while in the second case, a user would probably want/have to reimplement the method entirely. Cheers, Henry -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html