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"


Reply via email to