functions without parentheses
Bengt Richter
bokr at oz.net
Sat Jul 30 14:42:59 EDT 2005
On Fri, 29 Jul 2005 20:54:42 +1000, Steven D'Aprano <steve at REMOVETHIScyber.com.au> wrote:
>On Fri, 29 Jul 2005 06:37:52 +0000, Bengt Richter wrote:
>
>> I suggested in a previous thread that one could support such a syntax by
>> supporting an invisible binary operator between two expressions, so that
>> examine "string" translates to examine.__invisbinop__("string") if
>> examine as an expression evaluates to an object that has a __invisbinop__ method.
>
>Why would you want to?
>
Mainly to say that I think there is way to do it (and thus further to mulch the idea garden ;-)
whatever the merits. As to the merits, I haven't thought about it much, but ISTM for limited
contexts it would allow you to spell concatenating/aggregating expressions without the
"line noise" of intervening operator glyphs, e.g.,
agg = Aggregate() first_thing second_thing 3 "four" etc.and.so.forth ;
or
mypath = Path() prefix middle filename+'.ext' ; # explicit terminating ';' or (...) might be needed
# if EOL can be part of whitespace delim as below
or
arr = (ArrayElementAggregator()
11 12 13
21 22 23
)
The latter presupposes that white-space including an EOL causes attempt to access an alternate
__invisbinop__ (e.g., __invisbinopNL__) that one could define to aggregate new rows of expressions,
but would not be an error if absent, and thus end a single-line aggregator without explict ';' or parens.
I haven't thought of all the ramifications, I was just playing with the idea ;-)
Others might think of other ways to answer your "why" ;-)
Regards,
Bengt Richter
More information about the Python-list
mailing list