Le vendredi 10 juin 2011 à 16:29 -0700, Vinzent Steinberg a écrit :
> On 9 Jun., 23:31, Aaron Meurer <asmeu...@gmail.com> 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 sympy@googlegroups.com.
To unsubscribe from this group, send email to 
sympy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to