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 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
signature.asc
Description: Message signed with OpenPGP using GPGMail