[Cython] Local type inference, first success

Vitja Makarov vitja.makarov at gmail.com
Fri Jul 13 18:53:18 CEST 2012


Hi!

I've been a little bit busy last months, now I'm back.

I made first steps on implementing local type inference, TI for
assignments not only for their names.
Here is sample program that works:

(_entry_split) vitja at mchome:~/work/cython-vitek-git/zzz$ cat tf.pyx
# cython: infer_types.verbose=True
from cython cimport typeof

def foo(c):
    a = "abc"
    print a, typeof(a)
    if c:
        a = 123
    else:
        a = 1.123
    print a, typeof(a)

(_entry_split) vitja at mchome:~/work/cython-vitek-git/zzz$ make tf.c
python ../cython.py  -v tf.pyx -o tf.c
Compiling /home/vitja/work/cython-vitek-git/zzz/tf.pyx
Gonna split entries:
entry: Entry(name=a, type=<unspecified>)
... group: set([NameAssignment(entry=Entry(name=a,
type=<unspecified>)), NameAssignment(entry=Entry(name=a,
type=<unspecified>))])
... ... (<FileSourceDescriptor:/home/vitja/work/cython-vitek-git/zzz/tf.pyx>,
8, 10)
... ... (<FileSourceDescriptor:/home/vitja/work/cython-vitek-git/zzz/tf.pyx>,
10, 10)
... group: set([NameAssignment(entry=Entry(name=a, type=<unspecified>))])
... ... (<FileSourceDescriptor:/home/vitja/work/cython-vitek-git/zzz/tf.pyx>,
5, 6)
note: tf.pyx:5:6: inferred 'a.#1' to be of type 'Python object'
note: tf.pyx:5:6: inferred 'a.#0' to be of type 'double'

-- 
vitja.


More information about the cython-devel mailing list