My suggestion is the following one:
        we could add it because there is value: now I would not use it in the 
core of the system.
        I hope that one of these days we will be able to bootstrap and identify 
a kernel and after that 
        we could tag a bit the methods in terms of layers.

Stef

On Aug 30, 2011, at 9:14 PM, Stéphane Ducasse wrote:

> Indeed I would prefer just to have perform: and block value:
> 
> Stef
> 
> On Aug 30, 2011, at 8:34 PM, Lukas Renggli wrote:
> 
>> Therefor I suggested to remove Symbol>>#value: the last time this was
>> brought up.
>> 
>> If you keep it, besides all the variations of #value:... you also need
>> to consider #cull:, #cull:cull:, #cull:cull:cull:,
>> #valueWithArguments:, valueWithEnoughArguments:,
>> #valuWithPossibleArgs:, #valueWithPossibleArguments:; as well as
>> somebody needs to fix #numArgs (which is highly inconsistent with a
>> block that has the same behavior).
>> 
>> Also for many asymmetric selectors the trick does not work (e.g.
>> #join:, #matches:, #includesSubString:, ...) because you need to turn
>> around the arguments.
>> 
>> Aside from the above, evaluable selectors hamper readability: Back in
>> 2005 Magritte added #value: and #value:value: as method extensions.
>> You can go and read all the mails of people having troubles reading
>> the code. The benefit of writing a few characters less is really not
>> worth the trouble spent digesting the code.
>> 
>> Lukas
>> 
>> On 30 August 2011 20:09, Niko Schwarz <[email protected]> wrote:
>>> It's a question of consistency. Why support value:, but not value:value:?
>>> 
>>> Niko
>>> 
>>> On Tue, Aug 30, 2011 at 7:45 PM, Igor Stasenko <[email protected]> wrote:
>>>> On 30 August 2011 18:02, Douglas Brebner <[email protected]> 
>>>> wrote:
>>>>> On 30/08/2011 13:30, Tudor Girba wrote:
>>>>> 
>>>>> I proposed this some one or two years ago. I got shut down, but I still 
>>>>> find
>>>>> it a good idea.
>>>>> 
>>>>> And I even have a semantic reason:
>>>>> - A Block represents a piece of functionality that can be evaluated with
>>>>> some input
>>>>> - A Symbol often represents a selector which in turns represents a piece 
>>>>> of
>>>>> functionality that can be evaluated with some input.
>>>>> 
>>>>> I seem to recall there was discussion some time ago about splitting 
>>>>> Selector
>>>>> functionality from Symbol. After all, there's no real reason that a 
>>>>> selector
>>>>> has to be a Symbol.
>>>>> 
>>>> 
>>>> Selector is just a role to identify a method in method's dictionary.
>>>> It can be any object: if you look how VM does a lookup
>>>> there's nothing which limits a selectors to be the instances of Symbol
>>>> (perhaps the only thing is printing a stack trace ;).
>>>> 
>>>> What i mean that any object may be a selector:
>>>> 
>>>> MyClass methodDict at: 1 put: someMethod.
>>>> 
>>>> MyClass new perform: 1
>>>> 
>>>> should work.
>>>> 
>>>> So, i don't see what you can gain by splitting functionality of
>>>> Selector from Symbol. Then you should put all selector-related
>>>> protocol to Object class.
>>>> And this even worse idea :)
>>>> 
>>>> 
>>>>> Also, some of the examples in this thread seem to be about terseness for
>>>>> terseness sake.
>>>>> 
>>>> 
>>>> Yeah. I have same impression.
>>>> But its cool :)
>>>> 
>>>> 
>>>> 
>>>> --
>>>> Best regards,
>>>> Igor Stasenko AKA sig.
>>>> 
>>>> 
>>> 
>>> 
>>> 
>>> --
>>> http://scg.unibe.ch/staff/Schwarz
>>> twitter.com/nes1983
>>> Tel: +41786126354
>>> 
>>> 
>> 
>> 
>> 
>> -- 
>> Lukas Renggli
>> www.lukas-renggli.ch
>> 
> 
> 


Reply via email to