[Squeak] Newbie permutations
Richard A. O'Keefe
ok at cs.otago.ac.nz
Wed Apr 10 04:02:51 UTC 2002
Writing about #permutationsDo:, "Brian T. Rice" <water at tunes.org> suggested
The compromise is to introduce a way to pipe out permutations one at a
time onto a stream, maybe permutationsOnStream: and have the stream pull
them as necessary, probably at the request of the stream-consumer.
I'm just typing aloud here, but isn't the problem (of having x do: aBlock
but not x collect: aBlock and so on) rather more general than permutations,
and one which could be solved in an OO way?
Something like this.
(IterationAdapter on: #(1 3 5) selector: #permutationsDo:)
select: [:each| ...] thenCollect: [:selected| ...]
I've now written such a class and it will appear shortly as an [ENH].
So much code had to be duplicated between this and Collection,
and could not be inherited because an IterationAdapter _isn't_ a
Collection, that a refactoring where IterationAdapter and Collection
became children of a new IterationSupporter class would seem to be
called for. But before anything like that should be done,
IterationAdapter ought to be generalised to let you wrap iteration
code around a read stream.
More information about the Squeak-dev