[squeak-dev] The Inbox: Kernel-ul.1059.mcz
Levente Uzonyi
leves at caesar.elte.hu
Sat Feb 11 10:11:40 UTC 2017
Hi Tobias,
On Sat, 11 Feb 2017, Tobias Pape wrote:
> Hi Levente
>
> On 11.02.2017, at 03:04, commits at source.squeak.org wrote:
>
>> Levente Uzonyi uploaded a new version of Kernel to project The Inbox:
>> http://source.squeak.org/inbox/Kernel-ul.1059.mcz
>>
>> ==================== Summary ====================
>>
>> Name: Kernel-ul.1059
>> Author: ul
>> Time: 11 February 2017, 3:00:22.370854 am
>> UUID: b88b767b-b0d8-43ff-ba86-a19b11affe6d
>> Ancestors: Kernel-ul.1058
>>
>> - check the type of the argument of #& and #| of booleans
>
> Why do we want the check?
> I see no advantage…
Not too long ago there was this thread[1] with the following kind of
example:
a = b | c = d ifTrue: [ ... ].
The type check will quickly let you know if you forget a pair of
parentheses:
a = b | (c = d) ifTrue: [ ... ].
The runtime is about 1.5-2x compared to the original methods, but if you
use #| and #&, you probably don't care about performance anyway.
Levente
[1] http://forum.world.st/I-was-surprised-td4928576.html
>
> Best regards
> -Tobias
>
>>
>> =============== Diff against Kernel-ul.1058 ===============
>>
>> Item was changed:
>> ----- Method: False>>& (in category 'logical operations') -----
>> & aBoolean
>> + "Evaluating conjunction -- answer false since receiver is false, but let the VM quickly check the type of the argument first."
>> - "Evaluating conjunction -- answer false since receiver is false."
>>
>> + aBoolean ifFalse: [ ^false ].
>> + ^false!
>> - ^self!
>>
>> Item was changed:
>> ----- Method: False>>| (in category 'logical operations') -----
>> | aBoolean
>> + "Evaluating disjunction (OR) -- could answer aBoolean since receiver is false, but let the VM quickly check the type of the argument instead."
>> - "Evaluating disjunction (OR) -- answer with the argument, aBoolean."
>>
>> + aBoolean ifTrue: [ ^true ].
>> + ^false!
>> - ^aBoolean!
>>
>> Item was changed:
>> ----- Method: True>>& (in category 'logical operations') -----
>> & aBoolean
>> + "Evaluating conjunction -- could answer aBoolean since receiver is true, but let the VM quickly check the type of the argument instead."
>> - "Evaluating conjunction -- answer aBoolean since receiver is true."
>>
>> + aBoolean ifFalse: [ ^false ].
>> + ^true!
>> - ^aBoolean!
>>
>> Item was changed:
>> ----- Method: True>>| (in category 'logical operations') -----
>> | aBoolean
>> + "Evaluating disjunction (OR) -- answer true since the receiver is true, but let the VM quickly check the type of the argument first."
>> - "Evaluating disjunction (OR) -- answer true since the receiver is true."
>>
>> + aBoolean ifTrue: [ ^true ].
>> + ^true!
>> - ^self!
>>
>>
More information about the Squeak-dev
mailing list
|