Le vendredi 10 juin 2011 à 16:29 -0700, Vinzent Steinberg a écrit : > On 9 Jun., 23:31, Aaron Meurer <[email protected]> wrote: > > Yeah, surely there was a typo when you typed this. The expression as > > given is not syntactically correct Python (you can't assign to x|y). > > Or else I (and I think everyone else too) is misunderstanding what you > > meant to say. > > Sorry for the confusion, it was not meant to be Python. It would > translate to this code: > > a = x | y > assert a == x if x else y > > Or longer: > > if x: > a = x > else: > a = y > > > > I'm not sure what you're suggesting here. This looks like a programming > > > construct, which already exists in Python: 'x or y'. If it's meant to > > > return a symbolic expression, I'd say too much is implicit here and we > > > should rather use something like If(Ne(x, 0), x, y). > > In Python this does not work with 'or', because 'or' always returns > either True or False, just like 'in'.
No, it doesn't: >>> 42 or '6*9' 42 >>> 0 or '6*9' '6*9' > (I would prefer to use 'or' > rather than '|'.) If you allowed 'or' to return an object, all boolean > logic would still work, and you could do some fancy expressive stuff. > Taken from a recent Go review [1]: > > """ > Many people shun it, but the ?: ternary operator is a good idea, if > used correctly. Python does foo if bar else baz, which is a little > more verbose but still okay. Most dynamic languages, however, rock > with their boolean operators AND and OR not just evaluating to true > and false, but to the actual value that was considered true. Imagine > the assignment value = cmdline_option || "default". That requires a > decent boolean interpretation of all data types, however. > """ > > Well, whether this is a good idea is arguable. Ronan, you will > probably think it is a bad idea, I guess. :) > > > And like "and" and "or", I don't think you can override the > > triconditional. "A if B else C" just evaluates bool(B) and returns A > > if it is True and C if it is False. > > This is exactly what I wanted to happen. > > Vinzent > > > [1] http://www.syntax-k.de/projekte/go-review > -- You received this message because you are subscribed to the Google Groups "sympy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sympy?hl=en.
