[squeak-dev] The Inbox: Kernel-ul.1059.mcz

Tobias Pape Das.Linux at gmx.de
Sat Feb 11 11:04:09 UTC 2017


On 11.02.2017, at 11:11, Levente Uzonyi <leves at caesar.elte.hu> wrote:

> 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
> 

Sure.
I however liked the simplicity of the old methods :/

>> 
>> 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