Vitja Makarov | 13 Jul 2012 18:53
Picon
Gravatar

[Cython] Local type inference, first success

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>,
(Continue reading)

Vitja Makarov | 13 Jul 2012 18:55
Picon
Gravatar

Re: [Cython] Local type inference, first success

2012/7/13 Vitja Makarov <vitja.makarov@...>:
> 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>))])
(Continue reading)


Gmane