Re: Proposed new conditional operator: or else
On 2014-12-02 23:05, Dennis Lee Bieber wrote: foo == 42 or else Has a PERL stink to it... like: foo == 42 or die This actually works in Python and I occasionally use in debugging (much like -- https://mail.python.org/mailman/listinfo/python-list
Re: Proposed new conditional operator: or else
On Wed, Dec 3, 2014 at 10:56 PM, Tim Chase python.l...@tim.thechases.com wrote: This actually works in Python and I occasionally use in debugging (much like finish_sentence() or die ChrisA -- https://mail.python.org/mailman/listinfo/python-list
Re: Proposed new conditional operator: or else
On 2014-12-02 23:05, Dennis Lee Bieber wrote: foo == 42 or else Has a PERL stink to it... like: foo == 42 or die This statement actually works in Python and I occasionally use it when debugging (in the same fashion as one might do printf() debugging in C). It raises a NameError and the program dies with a traceback. Most frequently, it's to prevent the program from continuing on to connect to a database and actually make changes. I've grown up a bit and usually use pdb.set_trace() now, but it's still in my grab-bag of tools. -tkc [sorry for the previous message if I failed to cancel the send that happened when I accidentally pressed ctrl+enter...typing in the dark] -- https://mail.python.org/mailman/listinfo/python-list
Re: Proposed new conditional operator: or else
On Wed, Dec 3, 2014 at 10:59 PM, Tim Chase python.l...@tim.thechases.com wrote: On 2014-12-02 23:05, Dennis Lee Bieber wrote: foo == 42 or else Has a PERL stink to it... like: foo == 42 or die This statement actually works in Python and I occasionally use it when debugging (in the same fashion as one might do printf() debugging in C). It raises a NameError and the program dies with a traceback. Most frequently, it's to prevent the program from continuing on to connect to a database and actually make changes. *gasp* But it's just as fragile as assert! Anyone could just put one line of code into your program and destroy all your debugging checks! die = False Your code has just been made immortal! This is *obviously* a complete waste of time, since it's that easy to defeat! [sorry for the previous message if I failed to cancel the send that happened when I accidentally pressed ctrl+enter...typing in the dark] It was its own joke. :) ChrisA -- https://mail.python.org/mailman/listinfo/python-list
Re: Proposed new conditional operator: or else
On Tue, Dec 2, 2014 at 11:18 AM, Roy Smith r...@panix.com wrote: Wouldn’t it be neat to write: foo == 42 or else and have that be an synonym for: assert foo == 42 :-) Never going to happen, but I like it! Perhaps raise IntimidationError instead of AssertionError when it fails? -- Zach -- https://mail.python.org/mailman/listinfo/python-list
Re: Proposed new conditional operator: or else
On 12/02/2014 09:41 AM, Zachary Ware wrote: On Tue, Dec 2, 2014 at 11:18 AM, Roy Smith wrote: Wouldn’t it be neat to write: foo == 42 or else and have that be an synonym for: assert foo == 42 Never going to happen, but I like it! Perhaps raise IntimidationError instead of AssertionError when it fails? As long as when raising Intimidation, it also roughs up a couple surrounding lines as a warning to the rest of the code... -- ~Ethan~ signature.asc Description: OpenPGP digital signature -- https://mail.python.org/mailman/listinfo/python-list
Re: Proposed new conditional operator: or else
On Wed, Dec 3, 2014 at 4:41 AM, Zachary Ware zachary.ware+pyl...@gmail.com wrote: On Tue, Dec 2, 2014 at 11:18 AM, Roy Smith r...@panix.com wrote: Wouldn’t it be neat to write: foo == 42 or else and have that be an synonym for: assert foo == 42 :-) Never going to happen, but I like it! Perhaps raise IntimidationError instead of AssertionError when it fails? Definitely. That's what I first thought, when I saw the subject line. Additionally, whenever this construct is used, the yield statement (expression, whatever) will be redefined to yield to intimidation and make the statement true, whatever it takes. In the above example, yield would decide which out of foo and 42 is more amenable to change, and altering it to be equal to the other. (It may also find that == is the most amenable, and alter its definition such that foo and 42 become equal.) ChrisA -- https://mail.python.org/mailman/listinfo/python-list
Re: Proposed new conditional operator: or else
On 2014-12-02 11:41, Zachary Ware wrote: On Tue, Dec 2, 2014 at 11:18 AM, Roy Smith r...@panix.com wrote: Wouldn’t it be neat to write: foo == 42 or else and have that be an synonym for: assert foo == 42 :-) Never going to happen, but I like it! Perhaps raise IntimidationError instead of AssertionError when it fails? In light of the parallel thread discussing the assert statement and the perils of trusting it to be present even though it can be optimized away, this or else could be (in the altered words of Don Corleone), I'm gonna make an assertion he can't refuse. (not that I particularly want/expect this in the language definition, but it's fun to entertain the idea) -tkc -- https://mail.python.org/mailman/listinfo/python-list
Re: Proposed new conditional operator: or else
Tim Chase python.l...@tim.thechases.com: foo == 42 or else In light of the parallel thread discussing the assert statement and the perils of trusting it to be present even though it can be optimized away, this or else could be (in the altered words of Don Corleone), I'm gonna make an assertion he can't refuse. I would consider vain threats an antipattern. Marko -- https://mail.python.org/mailman/listinfo/python-list
Re: Proposed new conditional operator: or else
On 2014-12-02 17:41:06 +, Zachary Ware said: foo == 42 or else Never going to happen, but I like it! Perhaps raise IntimidationError instead of AssertionError when it fails? That should probably be a DONTPANICError in large, friendly terminal font letters. -- Andrea -- https://mail.python.org/mailman/listinfo/python-list
Re: Proposed new conditional operator: or else
Zachary Ware zachary.ware+pyl...@gmail.com wrote: On Tue, Dec 2, 2014 at 11:18 AM, Roy Smith r...@panix.com wrote: Wouldn’t it be neat to write: foo == 42 or else and have that be an synonym for: assert foo == 42 :-) Never going to happen, but I like it! Perhaps raise IntimidationError instead of AssertionError when it fails? I guess the or else statement should do this: condition or else threat where the statement threat is executed if the statement condition evaluates to false. In absence of an explicit threat condition or else it should raise IntimidationError if condition evaluates to false false. If condition evaluates to true it should just return conditon. Sturla -- https://mail.python.org/mailman/listinfo/python-list
Re: Proposed new conditional operator: or else
In article mailman.16498.1417544472.18130.python-l...@python.org, Chris Angelico ros...@gmail.com wrote: On Wed, Dec 3, 2014 at 4:41 AM, Zachary Ware zachary.ware+pyl...@gmail.com wrote: On Tue, Dec 2, 2014 at 11:18 AM, Roy Smith r...@panix.com wrote: Wouldnât it be neat to write: foo == 42 or else and have that be an synonym for: assert foo == 42 :-) Never going to happen, but I like it! Perhaps raise IntimidationError instead of AssertionError when it fails? Definitely. That's what I first thought, when I saw the subject line. Additionally, whenever this construct is used, the yield statement (expression, whatever) will be redefined to yield to intimidation and make the statement true, whatever it takes. In the above example, yield would decide which out of foo and 42 is more amenable to change, and altering it to be equal to the other. (It may also find that == is the most amenable, and alter its definition such that foo and 42 become equal.) ChrisA This could be handy in the field of forensic accounting. -- https://mail.python.org/mailman/listinfo/python-list
Re: Proposed new conditional operator: or else
On 12/02/2014 10:18 AM, Roy Smith wrote: In the process of refactoring some code, I serendipitously created what I think is an essential new bit of Python syntax. The “or else” statement. I ended up with: sites_string = args.sites or else self.config['sites'] But isn't that syntactically equivalent of this? sites_string = args.sites or self.config['sites'] Seems to be what you're looking for with or else unless I misunderstand what you're proposing. Doing a bit of testing in the interpreter and I find that a combination of Python's truthiness semantics and short-circuit evaluation seems to give a consistent result. Consider: 'a word' or False = 'a word' 'a word' or True = 'a word' False or 'a word' = 'a word' True or 'a word' = True Is this similar to what you'd expect with or else? -- https://mail.python.org/mailman/listinfo/python-list
Re: Proposed new conditional operator: or else
Dennis Lee Bieber wlfr...@ix.netcom.com wrote: foo == 42 or else Has a PERL stink to it... like: foo == 42 or die I think this statement needs to take ellipsis as well foo == 42 or else ... Sturls -- https://mail.python.org/mailman/listinfo/python-list