[Cython] CF based type inference

Stefan Behnel stefan_ml at behnel.de
Wed May 9 17:13:10 CEST 2012


Dag Sverre Seljebotn, 08.05.2012 18:52:
> Vitja Makarov wrote:
>> def partial_validity():
>>   """
>>   >>> partial_validity()
>>   ('str object', 'double', 'str object')
>>   """
>>   a_1 = 1.0
>>   b = a_1 + 2   # definitely double
>>   a_2 = 'test'
>>   c = a_2 + 'toast'  # definitely str
>>   return typeof(a_2), typeof(b), typeof(c)
>>
>> And this should work better because it allows to infer a_1 as a double
>> and a_2 as a string.
> 
> +1 (as also Mark has hinted several times). I also happen to like that
> typeof returns str rather than object... I don't think type inferred code
> has to restrict itself to what you could dousing *only* declarations.
> 
> To go out on a hyperbole: Reinventing compiler theory to make things 
> fit better with our current tree and the Pyrex legacy isn't sustainable 
> forever, at some point we should do things the standard way and
> refactor some code if necesarry.

That's how these things work, though. It's basically register allocation
and variable renaming mapped to a code translator (rather than a compiler
that emits assembly or byte code).

Stefan


More information about the cython-devel mailing list