[squeak-dev] The Trunk: Kernel-nice.402.mcz

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Tue Feb 16 09:33:34 UTC 2010


2010/2/16 Michael Haupt <mhaupt at gmail.com>:
> Hi,
>
> On Tue, Feb 16, 2010 at 10:08 AM,  <commits at source.squeak.org> wrote:
>> +       "Answer a new Integer that has the bit of rank anInteger set to value.
>> +       The bit value should be 0 or 1, otherwise raise an Error.
>> +       The bits are indexed starting at 1 for the least significant bit.
>> +       For negative integers, operate on 2-complement representation."
>
> hm. I understand that Smalltalk's idiomatic way of using 1-based
> indexing is applied here, but the indices into bits of integers
> correlate fairly strong with the powers of two they represent. I'd
> argue that using 0 for the LSB is more appropriate with regard to the
> domain being modelled here.
>
> Also, I'd suggest to raise the error early on, instead of at the end
> of the entire method.
>
> Best,
>
> Michael
>
>

Hi Michael,

I understand your argument, but 1-based is the ANSI standard...

I did not want to test pre-conditions, because most time, users will
provide a 0 or 1 value and thus we will just waste time testing for
nothing.
But this could make sense to use precondition with another implementation:

    (#(0 1) includes: value) ifFalse: [self error: '...'].
    ^(self bitOr: (1 bitShift: anInteger - 1)) - (value bitShift: anInteger - 1)

Nicolas



More information about the Squeak-dev mailing list