On Tue, Nov 15, 2016 at 09:43:18AM +0100, Vincent Delecroix wrote: > And what do you do with > > my_function1() or my_function2() or my_function3()
Shortcut when you meet a True. For "and", shortcut when you meet a Unknown or a False. > shortcut or not shortcut? The current state of Python is that some of > the above functions might not be evaluated (ie shortcut) *before* > knowing the return type. > > > On 15 November 2016 at 09:41, Thierry <sage-googlesu...@lma.metelu.net> wrote: > > On Tue, Nov 15, 2016 at 09:27:14AM +0100, Vincent Delecroix wrote: > >> On 15 November 2016 at 09:19, Thierry <sage-googlesu...@lma.metelu.net> > >> wrote: > >> > On Tue, Nov 15, 2016 at 08:53:43AM +0100, Vincent Delecroix wrote: > >> >> Not currently (though we have "Unknown"). The main problem is the > >> >> interaction with Python booleans and the operators "or", "and", "not" > >> >> (which are *not* logical operators). The Sage "Unknown" is badly > >> >> broken for these reasons > >> >> > >> >> sage: not Unknown # waiting for Unknown > >> >> True > >> >> sage: Unknown or False # waiting for Unknown > >> >> False > >> >> > >> >> So be careful if you start using it! > >> >> > >> >> If we would use the correct logical operators ~ (for negation), ^ (for > >> >> xor) and & (for and) then we might be able to come up with something. > >> >> But Sage sort of ignore them. > >> >> > >> >> This problem has been discussed a lot on this mailing list and there > >> >> even exists a (refused) PEP request in this direction. > >> > > >> > For reference, it is https://www.python.org/dev/peps/pep-0335/ (the main > >> > reason for rejecting the proposal was "too much discussions"...). > >> > > >> > Perhaps was the proposal too greedy, so i wonder whether there would be a > >> > possibility to have a trool adding an Unknown to bool that does not > >> > perturb the speed when only True and False are used, and so that the > >> > "short-circuiting semantics" remains preserved. > >> > >> No way! In an expression such as > >> > >> "True or whatever_function(x)" > >> > >> the "whatever_function(x)" is *not* evaluated... > >> > >> sage: def f(): print "hello" > >> sage: True or f() > >> True > > > > I do not see your point. True or Unknown should be True, right ? So we can > > shortcut here as well for trools, no ? > > > > Ciao, > > Thierry > > > > > >> > >> > This could indeed be useful in testing equality of overlaping > >> > real-intervals, undecidable problems in groups, equality of symbolic > >> > expressions, ... > >> > >> But I agree that it could be useful. > >> > >> Vincent > >> > >> -- > >> You received this message because you are subscribed to the Google Groups > >> "sage-devel" group. > >> To unsubscribe from this group and stop receiving emails from it, send an > >> email to sage-devel+unsubscr...@googlegroups.com. > >> To post to this group, send email to sage-devel@googlegroups.com. > >> Visit this group at https://groups.google.com/group/sage-devel. > >> For more options, visit https://groups.google.com/d/optout. > > > > -- > > You received this message because you are subscribed to the Google Groups > > "sage-devel" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to sage-devel+unsubscr...@googlegroups.com. > > To post to this group, send email to sage-devel@googlegroups.com. > > Visit this group at https://groups.google.com/group/sage-devel. > > For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "sage-devel" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sage-devel+unsubscr...@googlegroups.com. > To post to this group, send email to sage-devel@googlegroups.com. > Visit this group at https://groups.google.com/group/sage-devel. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.