[Python-3000] AST access (WAS: Adaptation vs. Generic Functions) (original) (raw)
Blake Winton bwinton at latte.ca
Tue Apr 11 01:39:15 CEST 2006
- Previous message: [Python-3000] AST access (WAS: Adaptation vs. Generic Functions)
- Next message: [Python-3000] AST access (WAS: Adaptation vs. Generic Functions)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Phillip J. Eby wrote:
I tried doing something like this when I was writing RuleDispatch, and gave up in disgust because there's no sane way to implement "and" and "or" operations with this approach. The bitwise operators (&, |, and ~) bind too tightly to be used with comparison expressions, so doing something like "x>y & z" would mean "x>(y&z)" instead of "(x>y)&z".
How would symbols, or ast access have helped you with that problem? Would you really go around manually mangling the parse tree to move the "&" higher in the branches somehow?
So if you could backquote code to make an AST literal, you could spell RuleDispatch overrides like: @pprintwhen(
isinstance(ob,list) and len(ob)<10
) def pprintshortlist(ob): ... And the database query use case could be done using something like: db.query((row for row in sometable if row.x>42)
)"Perhaps the backquote isn't the right character for this;
What do you think about the oft-maligned curly brace?
@pprint_when({isinstance(ob,list) and len(ob)<10})
def pprint_short_list(ob):
db.query( {(row for row in some_table if row.x>42)} )
? Not too heinous, in my view. And it should be possible to tell the difference between it and a dict with a bit of a lookahead... (Really it's the conflict with dict initialization that I expect to kill this proposal.)
Later, Blake.
- Previous message: [Python-3000] AST access (WAS: Adaptation vs. Generic Functions)
- Next message: [Python-3000] AST access (WAS: Adaptation vs. Generic Functions)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]