The first version:

(#(1 2 3) asSet collect: #odd)
do: [ :each | Transcript show: each; cr ]

is rather straight forward I believe, as collect: and do: has been around forever (relatively speaking).


#(1 2 3) asSet collect: #odd
thenDo: [ :each | Transcript show: each; cr ]

On 8 September 2019 at 09.13.36, Richard Sargent (richard.sargent@gemtalksystems.com) wrote:
��I am skeptical of one that relies on a specific implementation rather than a specific definition.

I share your feeling. I am not sure where such a definition would come from. In Squeak it is defined as:

collect: collectBlock thenDo: doBlock��

^ (self collect: collectBlock) do: doBlock

In pharo as:

collect: collectBlock thenDo: doBlock��

^ self do: [ :each | doBlock value: (collectBlock value: each)]

I might have called the method collect:eachDo:, but we each have slightly different styles. What I like about the pharo version is that is a shorthand for something which is not achieved by mere parentheses.

Best,

Kasper