[Cython] CF based type inference

Stefan Behnel stefan_ml at behnel.de
Sun Jun 2 08:22:07 CEST 2013


mark florisson, 21.05.2013 15:32:
> On 21 May 2013 14:14, Vitja Makarov wrote:
>>
>> def foo(int N):
>>     x = 1
>>     y = 0
>>     for i in range(N):
>>         x = x * 0.1 + y * 0.2
>>         y = x * 0.3 + y * 0.4
>>     print typeof(x), typeof(y)
>>
>> Here both x and y will be inferred as double
> 
> Ok, so I assume it promotes the incoming types (all reaching
> definitions)? If N == 0, then when using objects you get an int,
> otherwise a double.

I'm not sure what you mean here. I certainly don't think the inferred type
of x and y should depend on the value of N. It should always be a double,
because that's the spanning type for all paths. In the very unlikely case
that that's not what the user wants, explicit typing will easily fix it for
them.

Stefan



More information about the cython-devel mailing list