J2 paper 0.2.1
David Pokorny
davebrok at soda.csua.berkeley.edu
Tue Aug 24 15:03:45 EDT 2004
Robert,
I think the proposal is fantastic. Very thorough and positive.
Choice of Keyword:
+1 for 'using'
Grammar:
In another thread (J2 proposal: keyword), we came to some synthesis on
allowing semicolons to separate decorators:
"Nicolas Fleury" <nid_oizo at yahoo.com_removethe_> wrote in message
news:KqlWc.54712$F85.1167861 at wagner.videotron.net...
> Roman Suzi wrote:
> > This surprises me. And this doen't surprise:
> >
> > using:
> > staticmethod; synchronized; memoize
> > def bar(foo):
> > "To colon or not to colon? Def is the question."
> > pass
>
> +1
> Nicolas
This is a much better idea than what I had originally suggested, and there
is some precedent, namely the simple_stmt form (from Grammar/Grammar).
> simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
An argument against allowing this: it can lead to some mild abuse, namely
> > using:
> > staticmethod; synchronized; memoize; accepts(int,int); returns(int)
> > def bar(foo,foo2):
> > "To colon or not to colon? Def is the question."
> > pass
>From what I can tell, this is about as bad as it gets as for readability. I
see two rebuttals to this example:
A) accepts(...) and returns(...) are just stopgap measures for what may be
the "optimal function prototype syntax" (I can hear the groans already).
B) As a matter of philosophy, Python both creates the infrastructure to make
readable programs and encourages good coding style that leads to readable
programs but does not actually force you to write readable programs. I think
disallowing the following
> > using:
> > staticmethod; synchronized; memoize
> > returns(int); accepts(int,int)
> > def bar(foo,foo2):
> > "To colon or not to colon? Def is the question."
> > pass
would be an unjust fate for a decent compromise between readability and
economy.
---------------------------------------------------
One possible syntax, which mimics Grammar/Grammar:
small_decorator: dotted_name [ '(' [arglist] ')' ]
simple_decorator: small_decorator (';' small_decorator)* [';'] NEWLINE
suite_of_decorators: simple_decorator | NEWLINE INDENT simple_decorator+
DEDENT
funcdef: ['SpanishInquisition' ':' suite_of_decorators]
'def' NAME parameters ':'suite
David
More information about the Python-list
mailing list