On 19 Jun 2014, at 15:47, Tudor Girba <tu...@tudorgirba.com> wrote:

> In other engines where we want scripting to be used, we use a cull: or value: 
> with a prefix. In the case of Spec, this could be specCull:cull:. This could 
> be used as an extension of Symbol without spawning religious wars :).

Yes, also I can use a block with 1 param. The thing is that as far as I 
understand cull:cull: means:

if possible: “value:value:”
else if possible: “value:”
else “value”

So this can work for block. But maybe cull: has different philosophy 

Uko

> 
> The funny thing is that in all these engines that do define special value: 
> like methods, the implementation looks exactly the same. Perhaps this should 
> tell us that it would be worth having it by default.
> 
> Doru
> 
> 
> On Thu, Jun 19, 2014 at 2:16 PM, Yuriy Tymchuk <yuriy.tymc...@me.com> wrote:
> The thing is that cull:cull: can be used on block with 1 parameter. If you 
> consider symbol as a block with one parameter then it will work in the same 
> style.
> 
> In other words: methods that use value:value: want to ensure that they are 
> working with 2 param block. Methods that use cull:cull: don’t care what is 
> there, but allow you to customise the result with up to 2 parameters. With 
> symbol you can customise it with 1 parameter.
> 
> Uko
> 
> On 19 Jun 2014, at 14:08, Henrik Johansen <henrik.s.johan...@veloxit.no> 
> 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
> >
> > 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
> 
> 
> 
> 
> 
> -- 
> www.tudorgirba.com
> 
> "Every thing has its own flow"

Reply via email to