On Apr 12, 8:58 am, Jason Grout <[EMAIL PROTECTED]> wrote: > Carl Witty wrote: > > On Apr 10, 1:41 am, Simon King <[EMAIL PROTECTED]> wrote: > >> On Apr 10, 4:18 am, Carl Witty <[EMAIL PROTECTED]> wrote: > > >>> I like the "raise an exception" behavior, because it would eliminate > >>> questions asking why form1 and form2 below are different (from this > >>> sage-support > >>> threadhttp://groups.google.com/group/sage-support/browse_thread/thread/79d0...). > >>> (I have seen this exact problem at least twice on sage-support.) What > >>> do you think? > >> I guess what i suggest wouldn't solve the plot-issue. However, i think > >> if one doesn't know whether an inequality holds, or if the inequality > >> simply makes no sense (such as in the case of an unordered field) then > >> bool() should neither raise an exception nor return False but return > >> None. I think it is much simpler to have > The reason why I eventually decided that throwing an exception was > unpythonic was that I could not find a single case of current python > code which did that. Actually, the one reference I did find was a > bugfix to a project (I think SQLAlchemy), in which they changed > __nonzero__ to not raise an exception since it was inconsistent with > other behavior. > > That, and the fact that Python by default returns True for objects > instead of raising exceptions, tells me that raising exceptions would > also raise an exceptional number of eyebrows and probably voices too.
I agree that raising an exception is somewhat unpythonic, but I don't think that's an automatic veto on the idea. Sage does lots of unpythonic stuff already, and I think we should at least consider adding one more unpythonic behavior in this case. I still think that most of the times people write "if x > 0:", they will be implicitly wanting an unevaluated, symbolic conditional that we can't automatically provide; in these cases, I think raising an exception is much better than silently giving a result quite different than what's desired. For the few cases where people actually understand the issues (and the issues are complicated, involving two very different kinds of variables and two very different kinds of evaluation), and write "if x > 0:" wanting the current behavior, an exception is slightly worse than the current behavior; but if the exception points at a simple workaround (by having "Use the .known_true() method to evaluate unknown conditions to False" as part of the exception text) then the cost is very small. So according to this analysis, raising the exception is a large benefit (doesn't silently give the wrong answer) for a larger number of novice users, and a small cost for a smaller number of expert users. If this is correct, then I think we should raise the exception. Carl --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---