On 15 November 2016 at 09:27, Vincent Delecroix <20100.delecr...@gmail.com> 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
Though it would be doable with signatures of functions. def bool whatever_function() would avoid evaluation but def trool whatever_function() would do it. However, it is a drastic change that needs some kind of signature for functions. -- 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.