On 15 okt 2003, at 15:40, Bob Ippolito wrote: > > On Wednesday, Oct 15, 2003, at 09:21 America/New_York, Bob Ippolito > wrote: > >> >> On Wednesday, Oct 15, 2003, at 09:06 America/New_York, Jack Jansen >> wrote: >> >>> >>> On Wednesday, October 15, 2003, at 12:35 PM, Ronald Oussoren wrote: >>> >>>>> I've been thinking about it. And the nice thing is that "[" cannot >>>>> currently >>>>> occur as the start symbol for an expression, and I think a NAME >>>>> after an >>>>> expression is also safe, so adding rules like >>>>> atom: '[' test methodarg* ']' >>>>> methodarg: NAME ':' test >>>>> should work... >>>> >>>> I'm probably very dense, but isn't '[' the start of a list literal >>>> or list comprehension and therefore a valid start of an expression >>>> or statement?. >>> >>> No, it is *me* who is dense. Jack: open mouth, insert foot:-) >> >> Surely it would be theoretically parsable with no class between list >> literals or comprehensions.. you wouldn't have commas, or if you did, >> they would be after a colon.. and you wouldn't have the keywords >> "for" or "in". It probably wouldn't fit very well into the Python >> parser though. > > no clash between list literals, I mean. > > Also every message would be an invalid list or list comprehension > because of the space between the receiver and the first component of > the selector. There's also the useability of this options, code like the example below "feel" like lists in Python. foo = [app beginSheet: mySheet modalForWindow: self.docWindow modalDelegate: self didEndSelector: "sheetDidEnd:" contextInfo: None ] Actually, this feels more like a dict than a list. It definitly does not shout 'methodcall' at me. BTW. Another option for segemented method names would be: foo = app( 'beginSheet:', mySheet, 'modalForWindow:', window, ... ) This requires not changes to the language, is implementable today and is ugly. A possible implemenation would the methohd below to ObjC classes and instances: def __call__(self, *args): # Python 2.3 only, no error-checking and no varargs methods keys = args[::2] actualArgs = args[1::2] mname = (''.join(keys)).replace(':', '_') return getattr(self, mname)(*actualArgS) The obvious change to app(beginSheet=mySheet, ...) would need changes to the language to preserve the order of arguments. Ronald
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4