On 01 Nov 2013, at 23:55, Tudor Girba <tu...@tudorgirba.com> wrote: > Hi, > > I see that Pharo 3.0 has a Collection>>flatCollect:. This is great as the > method proved to be very valuable in the context of Moose. > > However, the current Pharo implementation is less ideal: > > Collection>>flatCollect: aBlock > ^ Array streamContents: > [:stream | > self do: [:ea | stream nextPutAll: (aBlock value: ea)]] > > The Moose one is: > Collection>>flatCollect: aBlock > "Evaluate aBlock for each of the receiver's elements and answer the > list of all resulting values flatten one level. Assumes that aBlock > returns some kind > of collection for each element. Equivalent to the lisp's mapcan" > "original written by a. Kuhn and released under MIT" > > | stream | > self isEmpty ifTrue: [ ^ self copy ]. > stream := (self species new: 0) writeStream. > self do: [ :each | stream nextPutAll: (aBlock value: each) ]. > ^ stream contents > > The difference is in the type returned. The Pharo one always returns Array, > while the Moose one returns a collection of the same species as the receiver.
Sounds right, returning #species. > Does anyone have anything against the Moose implementation? > > Doru > > -- > www.tudorgirba.com > > "Every thing has its own flow"