On 28 April 2011 23:59, Robert Bradshaw <rober...@math.washington.edu> wrote: > On Thu, Apr 28, 2011 at 2:29 PM, mark florisson > <markflorisso...@gmail.com> wrote: >> On 28 April 2011 22:31, mark florisson <markflorisso...@gmail.com> wrote: >>> On 28 April 2011 22:12, Robert Bradshaw <rober...@math.washington.edu> >>> wrote: >>>> On Thu, Apr 28, 2011 at 12:48 PM, mark florisson >>>> <markflorisso...@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. >>> >>> Right, so for fused types I don't mind string comparison with >>> cython.typeof(), but retrieval of the actual type for casts and >>> declaration remains open. I'd be fine with something like >>> cython.gettype(). >> >> It seems that this isn't optimized yet, but it looks to me like it >> wouldn't be very hard to do so. At least == and != could be resolved >> at compile time if the other operand is a string literal. > > Yes. We could consider supporting "typeof(x) is typeof(double)" or > even "typeof(int*)" etc. as well to not tie ourselves to strings. Or > perhaps some other syntax we haven't thought of. Alternatively, it > would be nice if it involved the literal fused_type as that's what > we're really branching on, e.g. > > ctypedef cython.fused_type(A, B) AorB > > cdef foo(AorB x): > if AorB[A]: # or .A or something > ... > > it's hard to come up with something that plays nicely with pointer types.
I like the typeof(my_type_here). So if we support listing types in typeof(), then you could also call typeof() on AorB to specialize. > - Robert > _______________________________________________ > cython-devel mailing list > cython-devel@python.org > http://mail.python.org/mailman/listinfo/cython-devel > _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel