On 20 Jun 2014, at 22:59, stepharo <steph...@free.fr> wrote: > > On 19/6/14 14:08, Henrik Johansen wrote: >> On 19 Jun 2014, at 1:42 , Yuriy Tymchuk <yuriy.tymc...@me.com> wrote: >> >>> Hi, >>> >>> maybe we should implement #cull:cull: in symbol so that it will call >>> #cull:? Because this looks correct, if block has 1 parameter, then >>> #cull:cull: boils down to #value:, but when we have a symbol instead, we >>> have an exception. >>> >>> I can open an issue and implement that stuff, but I want a feedback from >>> the conceptual point of view. >>> >>> Uko >>> >> #cull: is supposed to be the equivalent to the #value: protocol, where the >> parameter is optional. >> >> Symbol has no #value:value: message, hence it should have no #cull:cull: >> either. >> >> You could argue it should implement both, with value:value: polymorphic to >> the block >> [:a :b | a perform: theSymbol with: b ]. >> >> but cull:cull: would then mean equivalence to: >> for #+ [:a :b | a + b] >> for #squared [:a | a self] >> >> And I don’t see how that’d be intuitive/useful enough to warrant inclusion > > +1
I’m not telling to implement #value:value: but #cull:cull: which is equivalent to #value: so instead of [ :var | var name ] I can use just #name > > >> >> Considering the sole reason cull: on Symbol exists, is to allow select: >> etc. to be written using cull so the block arg is optional, but still do >> aCollection collect: #mySymbol, the closest equivalent would be . >> aCollection sort: #> / aCollection inject: 0 into: #+ >> which, while might be nice, both have no use for cull:cull: in the same >> manner: >> aCollection inject: 0 into: #squared -> [:sub :next | sub squared] ??? >> The whole "who is the receiver, what’s going on»-factor of cull:cull: on >> symbol is non-intuitive enough that at least I feel it’s better to write out >> the block explicitly. >> >> Cheers, >> Henry