0 is the only right offset, purely from mathematical principles.

Here's the reasoning:

We posit the need for the following concept:

- A range going from the first element to the last element. i.e. the
ability to describe a 'subList' or 'substring' that makes a copy of
the list.
- A range describing the empty set.

We'd like for this range to adhere to the following rules:

RULE 1: Counting elements in a list is in the domain of the natural
numbers. Therefore, if negative numbers are needed the solution is
inferior.
RULE 2: In a list of, say, 10 elements, it would be odd if '11' is
anything other than an Out-Of-Bounds number.

This is all you need to conclude the superiority of the 0-offset, end
indices markers to the right of the final character system that java
also uses:

 The end index has to be to the RIGHT and not to the LEFT of the final
character. If it was to the LEFT, then you'd need negative numbers to
describe the empty set of a set with 1 element in it. After all:

list.subList(0, 0) would then describe a list of size 1, whereas we
want one of size 0, so we'd have to write list.subList(0, -1). That's
awkward, so end indices have to work like they do in java.

Now that we've established why end indices have to work like this, we
can prove that lists have to  be 0-based. Let's say I have a list of
10 elements and I want to describe a sublist that covers everything,
but we live in base 1:

List copy = list.subList(1, 11);

Now '11' shows up as a valid number in a 10-length list. That's rather
annoying, as it doesn't feel very natural for 11 to be a meaningful
count into a size 10 list.

thus, 0 offset:

List copy = list.subList(0, 10); //Real java, and clearly the 'right'
answer.


:)

On Apr 16, 2:08 pm, Kevin Wright <[email protected]>
wrote:
> Think outside the box!  Why must we restrict ourselves to integers?  There's
> some wonderful stuff going on with transcendental numbers right now...
>
> On 16 April 2010 13:03, Wildam Martin <[email protected]> wrote:
>
> > On Fri, Apr 16, 2010 at 13:51, Fabrizio Giudici
> > <[email protected]> wrote:
> > >> Just don't make it 2 :-)
> > > What about -1? Just to be a bit unconventional.
>
> > I think you wanted to say "innovative" instead ov "unconventional". ;-)
>
> > --
> > Martin Wildam
>
> --
> Kevin Wright
>
> mail/google talk: [email protected]
> wave: [email protected]
> skype: kev.lee.wright
> twitter: @thecoda
>
> --
> You received this message because you are subscribed to the Google Groups 
> "The Java Posse" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group 
> athttp://groups.google.com/group/javaposse?hl=en.

-- 
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en.

Reply via email to