missing 'xor' Boolean operator
Ethan Furman
ethan at stoneleaf.us
Tue Jul 21 17:34:19 CEST 2009
Mark Dickinson wrote:
> On Jul 20, 11:34 pm, Ethan Furman <et... at stoneleaf.us> wrote:
>
>>Dr. Phillip M. Feldman wrote:
>> > 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.
>
>
> I'm not so sure. Did you ever wonder why the any() and all()
> functions introduced in 2.5 return a boolean rather than returning
> one of their arguments? (I did, and I'm still not sure what the
> answer is.)
>
> Mark
Very good question -- I likewise do not know the answer. I will only
observe that any() and all() are functions, while 'and' and 'or' are
not. If one wanted the object-returning behavior one could string
together 'or's or 'and's instead.
~Ethan~
--
Thinking out loud here -- YMMV. :)
More information about the Python-list
mailing list