Dag Sverre Seljebotn wrote:
>
>>> The 'for i from...' version was a compromise
>>
>> I understand that. Still, having two spellings for "for ... in ...", one
>> for Python, one for C, looks better than a completely different syntax
>> that just starts with "for". So I vote for
>>
>>     for x in iterable:
>>
>> and
>>
>>     for x in 1 < x <= 5:
>>
> Is this (int looping) something you tend to do?

It happens.


> When writing Python code

Not in Python code, but in Cython code, especially in low-level C-ish
functions.


> I almost never end up doing it, rather I end up using "enumerate" (or
> for NumPy, "ndenumerate") when I need the indices. I'd rather we worked
> on improved high-level looping than inventing new syntax for low-level
> looping.

As Greg pointed out, it's there because it's convenient.


> For instance, one could implement optimizations for "enumerate" in
> Cython as well as "range":
>
> for idx, value in enumerate(a):
>     BLOCK
>
> could be turned into the much more efficient
>
> for idx from 0 <= len(a):
>     value = a[idx]
>     BLOCK

Provided that a is indexable, which is getting less likely in recent
Python code.


> I suppose operating with C pointers increases the need for int looping,
> but when working with C code I see a much larger need for
>
> for (char* ch = start; *ch != 0; ++ch) ...

That's a while loop.


> which could be done simply by letting our builting "enumerate" know that
> char* should stop looping when hitting 0, also the more general
> (especially in C++).

No, please. You are trying to optimise an extremely special case here,
that is best dealt with in a straight C loop.


> The more general iteration pattern (especially for C++):
>
> for (T* iter = start; iter != v.end(); ++iter) ...
>
> could be done by something like
>
> for iterator in c_iteration(a.begin(), a.end()):
>   print iterator.get()
>   iterator.set(3)

-1 on this and other syntax proposals.

Stefan

_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to