On Thu, Jul 16, 2009 at 5:04 PM, Lukas Renggli<reng...@gmail.com> wrote:
>    ((aCollection readStream
>        select: [ :e | ... ])
>        collect: [ :e | ... ])
>        contents
>
> will iterate only once. Furthermore the second approach allows any
> combination of any of the enumeration methods, not just a few
> predefined ones. Also the implementation is less error prone, because
> it just uses the standard methods on collection and stream.

This is what I did in Nile:

NSCollectionStream>>select: aBlock
        "Returns a new stream which contains a selection of elements in the
receiver. All elements of the receiver are passed to aBlock. This is
really like Collection>>select:."
        ^ NSSelectStream selectBlock: aBlock inputStream: self

NSSelectStream being a kind of stream whose #next method iterate on
the input stream:

NSSelectStream>>next
       self inputStream do: [:each | (selectBlock value: each) ifTrue:
[^ each]].

-- 
Damien Cassou
http://damiencassou.seasidehosting.st

"Lambdas are relegated to relative obscurity until Java makes them
popular by not having them." James Iry

_______________________________________________
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to