[EMAIL PROTECTED] wrote:
Adding Optional Static Typing to Python looks like a quite complex
thing, but useful too:
http://www.artima.com/weblogs/viewpost.jsp?thread=85551

I have just a couple of notes:

Boo (http://boo.codehaus.org/) is a different language, but I like its
"as" instead of ":" and "->", to have:
def min(a as iterable(T)) as T:
Instead of:
def min(a: iterable(T)) -> T:


I want to introduce a shorter syntax form:

Declare variables
a'int
a'int = 13              
s'string = "Santana"
d'float

def min(a'int,  b'int)'int:
   c'int        # Declare a local variable c of type int
   c = a
   ...
*************************************

The (template) notation is very useful.
def min(a'T, b'T)'T:
    c'T
    c = a
    ....

f'float = min(1.2, 2.2)
i'int = min(9, f)  ## of course: comiler adds int(f) type conversion
*************************************

But these 2 should be syntactically wrong. The type of T is not obvious.

def max(a'int, b'int)'T:
   ....
def max(a, b)'T:
   ....
*************************************

The big question is how to handle combound data types (container objects) ? lists, tuples, maps...

Can a list contain various data types?

>>> h=['abc', 13, (9,8)]

# Declare h as list of ints
h'int[] = [1, 8, 991]

# These declarations produce syntax errors
h'int = [1, 8, 991]
error: h is a scalar not container

h'int[] = ['abc', 13, (9,8)]
             ^^
error: expecting int value
*************************************

Tuples

A general sequence
t = 1, 3, 4,

A tuple of ints
t'int() = 1, 3, 4,

What about this?
u'int() = t, 6, 7,

Yes, it's OK.  because the basic_scalar_values are ALL ints.

>>>print u
((1,3,4), 6,7)


Maps .....

*************************************

I think the compiler should allow typeless containers even you compile with --strict option. Apply --strict (strictly) to scalar types only.

*************************************


class A: pass


def func1(h'A) # Expects (instance) A or any subclass of A .... *************************************


// moma http://www.futuredesktop.org/OpenOffice.html



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to