Steven D'Aprano wrote:
On Tue, 14 Jul 2009 11:25:08 -0700, Dr. Phillip M. Feldman wrote:

Current Boolean operators are 'and', 'or', and 'not'.  It would be nice
to have an 'xor' operator as well.

I've often wished there was too, for the sake of completeness and aesthetics, I'd love to be able to write:

a xor b

instead of defining a function xor(a, b).

Unfortunately, outside of boolean algebra and simulating electrical circuits, I can't think of any use-cases for an xor operator. Do you have any?

The problem is that 'and' and 'or' are not limited to Boolean values:

    'and' returns the first false value or the last true value.

    'or' returns the first true value or the last false value.

What values should 'xor' return? IMHO, if only one of the values is true
then it should return that value, otherwise it should return False.

    1 xor 0 => 1
    0 xor 2 => 2
    1 xor 2 => False
    0 xor 0 => False

This is because it's a Boolean operator, so it should fall back to
Boolean values when necessary, like 'not':

    not 0 => True
    not 1 => False

Also:

    x and y and z => (x and y) and z
    x or y or z => (x or y) or z

therefore:

    x xor y xor z => (x xor y) xor z
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to