[fixed for bottom-posting]

Dr. Phillip M. Feldman wrote:
MRAB-2 wrote:


<snip>

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

> Suppose that 'xor' returns the value that is true when only one value is
> true, and False otherwise. This definition of xor doesn't have the standard
> associative property, that is,
>
> (a xor b) xor c
>
> will not necessarily equal
>
> a xor (b xor c)
>
> To see that this is the case, let a= 1, b= 2, and c= 3.
>
> (a xor b) xor c
>
> yields 3, while
>
> a xor (b xor c)
>
> yields 1. So, I'd prefer an xor operator that simply returns True or False.
>
> Phillip
>

You are, of course, free to write your version however it makes sense to you and your team. :)

Since the 'and' and 'or' already return objects (and objects evaluate to true or false), then 'xor' should behave likewise, IMO. I expect that would be the case if it were ever added to the language.

~Ethan~
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to