[Cython] Fused Types

Robert Bradshaw robertwb at math.washington.edu
Thu Apr 28 22:12:08 CEST 2011


On Thu, Apr 28, 2011 at 12:48 PM, mark florisson
<markflorisson88 at gmail.com> wrote:

> So I fixed all that, but I'm currently wondering about the proposed
> cython.typeof(). I believe it currently returns a string with the type
> name, and not the type itself.

Yes. This is just because there's not really anything better to return
at this point. We should "fix" this at some point in the future.

> So I think it would be inconsistent to
> suddenly start allowing comparison with 'is' and 'isinstance' and
> such.

I'm open to other suggestions, but would like an expression that
resolves at compile time to true/false (and we need to do branch
pruning on it). Note that type() is not good enough, because it has
different semantics, i.e.

    cdef object o = []
    typeof(o), type(o)

so lets not touch that one.

> I'm also wondering if it would be useful to allow actual type
> retrieval, which could be used in declarations and casts. For instance
> consider fusing two structs with the same attribute name but different
> attribute types. Perhaps in your code you want to introduce a variable
> compatible with such a type, e.g. consider this:
>
> ctypdef struct A:
>    int attrib
>
> ctypedef struct B:
>    char *attrib
>
> ctypedef cython.fused_type(A, B) struct_t
>
> cdef func(struct_t mystruct, int i):
>    cdef cython.gettype(mystruct.attrib) var = mystruct.attrib + i
>    ...
>
> What do you think?

Yes, I was thinking that would be supported as well.

- Robert


More information about the cython-devel mailing list