On Nov 1, 2007, at 4:28 PM, David Binger wrote:

Currently, templates are denoted by [html] (or [plain]) between the function name
and the parameter list.

I've proposed (and implemented) an alternative form I call template decorators,
where "@[xml]" or "@[str]" appears on the line before the def.

I've thought of another possibility that I want to run by you.

In python 3, we can (optionally) annotate parameters and functions like this:

def f(x:int, y:list) -> float:

I'm proposing using a similar annotation syntax for annotating the function name, using a colon and either "xml" or "str" to say that the function is a template and that it should be compiled using the "xml" transformation, or the "str"
transformation.

def f:xml():

or

def f:str():

I think improved grep-friendliness is important, and for that alone I'd prefer this syntax. I have one reservation though. The py3 proposed function annotations imply a type -- of a parameter or of the function's return value. The usage here does not -- it "modulates", indicates some sort of special behaviour. Maybe a modulator should precede... would this be too strange:

def xml:f ():
def str:f ():

Note the extra space... that i still prefer the look of for function defs ;-)

Also, in general my functions end up having a name longer than a single character, so maybe one should stare also at longer names, such as:

def xml:render_something ():
def str:render_something ():

I certainly prefer this to the template decorator syntax, but i am anyhow less sure of how this improves on:

def render_something [xml] ():
def render_something [str] ():

Maybe this notation fits best into the python of the future.

I like that it is as grep-able as the current notation, but a little shorter.

Current...  meaning [xml] and [str] syntax?

What do you think?

The compiler doesn't, but... I like it ;-)

_______________________________________________
QP mailing list
[email protected]
http://mail.mems-exchange.org/mailman/listinfo/qp

Reply via email to