Hi,

Robert Bradshaw wrote:
> On Mar 10, 2008, at 12:10 AM, Stefan Behnel wrote:
>> Dag Sverre Seljebotn wrote:
>>> We all agree that decorating variables in real Python is a real problem,
>>> but this proposal doesn't change anything for better or worse
>>> considering that. What this proposal says is that, given a hyopthetical
>>> CEP102 that proposes the following syntax for declaring types of
>>> in-function variables:
>>>
>>> i = typed(int)
>>>
>>> then a consequence of my proposal is that it is legal to also say
>>>
>>> v = typed(cpp.vector(int))
>>
>> I hope it won't be that syntax, as this is what an assignment from a
>> function
>> call looks like, this is not a declaration. Declarative syntax should
>> not be
>> easily confused with syntax that results in real code doing something.
> 
> My suggestion would be something of the form
> 
> i = cython.types.int
> v = cython.types.cpp.vector(int)
> 
> This would also have the right feel to it if type inference is done
> (though in the this case, assignment to i of a non-int would not change
> the type of i).

I'm still not convinced that assignment is a good way of dealing with type
declarations.

Wouldn't something like this work as well:

    def dostuff(a : int, b : str):
        type(c, char*)
        c = b

or

    def dostuff(a : int, b : str):
        assert type(c, char*)
        c = b

or maybe

    def dostuff(a : int, b : str):
        cython.assert_type(c, char*)
        c = b

This /would/ be valid Python syntax as long as you use only plain Python
types. And it's definitely more intuitive than an assignment.

Alternatively, I could imagine typing values at the first assignment. So, what
about this:

    def dostuff(a : int, b : str):
        c = cython.assigntype(char*, b)

Again, plain Python if you stick to Python types. But this time, it really
*is* an assignment.

Stefan
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to