[Cython] Local type inference, first success
Vitja Makarov
vitja.makarov at gmail.com
Fri Jul 13 18:55:09 CEST 2012
2012/7/13 Vitja Makarov <vitja.makarov at gmail.com>:
> 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'
>
Oops, sorry, here is my branch https://github.com/vitek/cython/tree/_entry_split
--
vitja.
More information about the cython-devel
mailing list