so in that case I would be in favor to remove them because this
does not help and just bloat the image.



On Jul 16, 2009, at 8:21 AM, Lukas Renggli wrote:

>> select: selectBlock thenCollect: collectBlock
>>
>>     | newCollection |
>>     newCollection := self species new.
>>     self do: [:each | (selectBlock value: each) ifTrue:  
>> [newCollection add:
>> (collectBlock value: each)]].
>>     ^newCollection
>
> That code would also break Dictionary and Array.
>
> I think the methods #select:thenCollect: and #collect:thenSelect:
> should be removed:
>
> - This is a low level optimization that the compiler (or JIT) should
> optimize, not the developer.
> - 'a select: b thenCollect: c' is longer to write than '(a select: b)
> collect: c'. Furthermore it is not that obvious what it does. I have
> seen several people being confused about it.
> - This is just #select:thenCollect:, what about
> #reject:thenCollect:select:thenInjectInto:? What about all subclasses
> that require a new implementation (Array, Dictionary, ...) of such
> methods.
>
> If people really want to be able to combine enumerator methods for
> higher efficiently the Collection hierarchy should be fixed. Having
> external iterator objects like in C++ and Java is not that bad after
> all:
>
>   result := aCollection iterator
>      select: [ :e | ... ];
>      collect: [ :e | ... ];
>      contents
>
> The accessors #select:, #reject:, #collect: ... on the iterator object
> would just iteratively create a new iteration block that is lazily
> executed when the result is accessed with #contents, #size or #do:.
>
> Cheers,
> Lukas
>
> -- 
> Lukas Renggli
> http://www.lukas-renggli.ch
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project@lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
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