On Sat, Nov 26, 2011 at 8:10 AM, Vitja Makarov <vitja.maka...@gmail.com> wrote:
> Hi!
>
> I'm now trying to make inlined generator expressions work again. And I
> found strange thing:
>
> inlined_generator_expression.pyx:
>
> def range_sum(int N):
>    """
>    >>> sum(range(10))
>    45
>    >>> range_sum(10)
>    45
>    """
>    result = sum(i for i in range(N))
>    return result
>
> 'i' is expected to be integer, but it isn't
>
> So I tried simple example and 'i' is inferred as object:
>
> def bar(int N):
>    cdef int result = 0
>    for i in range(N):
>        result += i
>    return result
>
> So, I'm wondering should it be inferred as int or not?

It's not because it's used in an arithmetic expression that might
overflow. You can decorate this with @cython.infer_types(True) or use
doubles to get the inference you want.

- Robert
_______________________________________________
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel

Reply via email to