Mailing List Archive: 49091 messages

## [REBOL] Re: Correct Behaviour? Was False = 2 ????

### From: agem:crosswinds at: 3-Jul-2001 3:35

```
RE: [REBOL] Re: Correct Behaviour? Was False = 2 ????

Hello Joel,

[joel--neely--fedex--com] wrote:
> Hello, all,
>
> Having already expressed some opinions (perhaps too many ;-)
> in this area, I felt inclined to listen for a while.  I
> think there are a couple of points that haven't come up
> that are worth considering.
>
> [Robbo1Mark--aol--com] wrote:
> >
> > 1. Should Series! Index begin at Zero?
> >
>
> I'd rephrase as "What are the pro/con tradeoffs for having
> series indices begin at 0 or 1?  If there are advantages
> to having 0-origin indexing, do those advantages outweigh
> the effort of conversion of existing code?"
>
> Let me pose a practical programming question:  given
>
>     >> a: [2 3 5 7 11 13 17 19]    == [2 3 5 7 11 13 17 19]
>     >> b: at a 5                   == [11 13 17 19]
>     >> c: at b 3                   == [17 19]
>
> what is the relationship between A and C?  I.e., what
> value of X makes
>
>     pick a x
>
> equivalent to
>
>     pick c 2
>
> Answering this question (or explaining the answer) in a 1-origin
> scheme (actually, any non-0-origin scheme) seems to involve the
> distinction between absolute indices and relative indices, which
> combine according to the following rules:
>
>     absolute  -  absolute is relative
>     absolute  +  absolute is useless/misleading
>     relative +/- relative is relative
>     absolute +/- relative is absolute
>
> The relative index of B in A is (5 - 1).  The relative index
> of C in B is (3 - 1).  Therefore, the absolute index of C/2
> in A is (5 - 1) + (3 - 1) + (2 - 1) + 1 = 8.
>

which is (5 - 1) + (3 - 1) + 2 = 8
or [(offset? a b) + (offset? b c) + 2]
and in a simulated 2d-array
y - 1 * width + x ; rebol-order ;-)
instead of
y * width + x
both not to much more complicated.
(aerm, +/- 1 . my preferred error..
usually i get confused with this stuff,
please check.. :)

> If all indexing were 0-origin, the distinction between absolute
> and relative indexes goes away.  The above example would have
> read
>
>     ;; a: [2 3 5 7 11 13 17 19]    == [2 3 5 7 11 13 17 19]
>     ;; b: at a 4                   == [11 13 17 19]
>     ;; c: at b 2                   == [17 19]
>
> and the position of C/2 relative to A would be 4 + 2 + 2 = 8.
>
> Remember that it wasn't until western civilization gave up the
> 1-origin Roman numerals and began using the 0-origin decimal
> system that arithmetic really began the uphill climb to becoming
> Mathematics.
>

Well, we have 0 too :)
for me 1 is more pleasant because i count and i index.
and counting says
i have one, i have two, .., i have length? all-that-here
and i ask others to give me the red easter-egg,
yes, that, the third.
in c i have to code
while[index < length? something]; hu? stopping before the last?!
in rebol
while[index <= length? something]
which makes more sense to me.
and top? stack <> length? stack ?
its goes very common after a while, but
- try then to talk to normal people.. :)

drawback is the slightly less performant index-calculation.
of course a good reason in c.
in rebol i rarely use clever index-tricks
(and have to think then in both worlds).
but 0 needs a mental translation allways without (very big) benefit.

rebol wants to be "plain english for computers" ;-)

> >
> > 2. Should 0, None & False be equivalent
> > for 'PICKing values from a series! and
> > return the FIRST or index 0 value whereas
> > True and 1 would return the SECOND or
> > Index 1 value?
> >
>
> There's another lurking inconsistency, which has nothing to do
> with converting to/from integers.  Consider that
>
>     >> logblk: reduce [
>     [    1 < 2  1 > 2  2 < 1  2 > 1
>     [    ]                             == [true false false true]
>     >> sort logblk                     == [false false true true]
>
> Doesn't it seem odd that SORT thinks that FALSE precedes TRUE,
> and yet PICK thinks that FALSE *follows* TRUE?  Surely the
> ordering of values within a type is a meaningful concept,
> whether or not we try to convert to/from some other type?
>

oops, well, hm, yes, it should be, aerhm, .. ;-)
i think sort hits exactly the middle between both interpretations?
Ah! the heavier values are right? hm?!
fortunally i seldom sort logicals, so i can defer the answer :)

> --
> It's turtles all the way down!

BTW i like the joke.but the first steps were elephants? Terry?! :)

>                                  joel'dot'neely'at'fedex'dot'com

;-) Volker
```