Indeed, it would be more elegant, but streamContents: is only defined in
SequeanceableCollection, so it is not generic enough.

Doru


On Sat, Nov 2, 2013 at 11:21 AM, Sven Van Caekenberghe <s...@stfx.eu> wrote:

> BTW, it seems #flatten in 2.0 has become #flattened in 3.0 and that too
> might needs the #species
>
> Would it also not be better and more elegant to say
>
> self species streamContents: [ :stream |
>   … ]
>
> ?
>
> On 02 Nov 2013, at 09:50, Sven Van Caekenberghe <s...@stfx.eu> wrote:
>
> >
> > 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"
>
>
>


-- 
www.tudorgirba.com

"Every thing has its own flow"

Reply via email to