[Cython] CF based type inference

Dag Sverre Seljebotn d.s.seljebotn at astro.uio.no
Wed May 9 17:58:07 CEST 2012


On 05/09/2012 05:13 PM, Stefan Behnel wrote:
> 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).

Yes, to be crystal clear, I was actually hinting at your original 
proposal here, and applauding Vitja's counter-proposal as a more 
standard way of doing things.

But I regretted posting at all afterwards, I do so little coding on 
Cython these days that I shouldn't interfer at this level. I'll try to 
leave such rants to Mark in the future :-)

Dag


More information about the cython-devel mailing list