[Python-Dev] Lukewarm about range literals

Greg Ward gward@mems-exchange.org
Wed, 30 Aug 2000 13:52:36 -0400


On 29 August 2000, Ka-Ping Yee said:
> I think these examples are beautiful.  There is no reason why we couldn't
> fit something like this into Python.  Imagine this:
> 
>     - The ".." operator produces a tuple (or generator) of integers.
>       It should probably have precedence just above "in".
>     
>     - "a .. b", where a and b are integers, produces the sequence
>       of integers (a, a+1, a+2, ..., b).
> 
>     - If the left argument is a tuple of two integers, as in
>       "a, b .. c", then we get the sequence of integers from
>       a to c with step b-a, up to and including c if c-a happens
>       to be a multiple of b-a (exactly as in Haskell).

I guess I haven't been paying much attention, or I would have squawked
at the idea of using *anything* other than ".." for a literal range.

> If this operator existed, we could then write:
> 
>     for i in 2, 4 .. 20:
>         print i
> 
>     for i in 1 .. 10:
>         print i*i

Yup, beauty.  +1 on this syntax.  I'd vote to scuttle the [1..10] patch
and wait for an implementation of The Right Syntax, as illustrated by Ping.


>     for i in 0 ..! len(a):
>         a[i] += 1

Ugh.  I agree with everythone else on this: why not "0 .. len(a)-1"?

        Greg