PEP308: Yet another syntax proposal
James J. Besemer
jb at cascade-sys.com
Tue Feb 11 02:28:55 EST 2003
Aahz wrote:
>>Not true, as I and others have explained at length elsewhere. Readability
>>and maintainability are SERVED by factoring out common sub-expressions from
>>the more verbose forms:
>>
>> if condition1:
>> if condition2
>> targetVar1 = result1
>> else:
>> targetVarl = result2 # hidden BUG!!
>> else:
>> targetVar1 = result3
>
>
> How is what you're saying here an argument against a conditional
> function?
Once again, you pointlessly stoop to emphasize the painfully obvious.
Obviously my example in this case has nothing to do with conditional
evaluation. The more astute readers probably gleaned from the text that I
was in this case working on a different point altogether. Yes, these
particular important benefits apply equally well to your iff() proposal.
> Seems to me that short-circuit is the *only* reason to dislike iif();
I dislike it because it's a functional form for what should be a standard
operator.
I further object to it's pointlessness, as in the absence of conditional it
won't provide a viable alternative to the inferior and/or idiom. I suspect
you like it so much precisely because it essentially defeats the PEP.
> and therefore you need to make your argument on changing the language
> (rather than the library) solely on the short-circuit point. That's a
> lot tougher, I think.
True.
But if he approves the proposal at all, I trust that Guido will see the
wisdom of going ahead and including the short circuit functionality, various
'statistical' and emotional arguments of dubious validity notwithstanding.
After all, short circuit functionality was integral to his original draft PEP
AND to the reference implementation he worked on previously. As some have
acknowledged, it's a slightly 'advanced' feature and perhaps only the wiser
of us understand how it's significant merit outweighs the minor cost.
While I doubt he has the stamina to keep up with all the volume coming down
this fire hose of late (especially given the higher than normal fecal
content), I do believe he sees or hears a representative sampling of the
various arguments. I trust him to give much greater weight to the logical
ones vs. the emotional ones.
[BREAKING NEWS]
Ha! Amazingly, while we were arguing (and, seriously, after writing the
above part of this reply), I see that the PEP author has seen the wisdom of
some of our arguments, and now has revised PEP-308, proposing a form which
many may find agreeable.
http://www.python.org/peps/pep-0308.html
Better yet, and more relevant to your question, the revised PEP includes
mention of something like your iff() and then rejects it because, among other
things,
BDFL opposes *any* solution that does
NOT provide short circuit behavior.
Furthermore, there's an entire section devoted to the motivation for short
circuit. Can you say, "End of discussion?"
I'm sure glad I waited until late tonight to begin to address this
(admittedly harder) issue. And I'm even gladder that I double checked the
PEP before attempting it, especially after such a long day. Best of all, I'm
glad to find that my trust in the right hon. BDFL was not misplaced, though
I'm amazed and astonished how quickly he came through.
Nighty night, all, and sleep tight.
--jb
--
James J. Besemer 503-280-0838 voice
2727 NE Skidmore St. 503-280-0375 fax
Portland, Oregon 97211-6557 mailto:jb at cascade-sys.com
http://cascade-sys.com
More information about the Python-list
mailing list