--- "Mark A. Biggar" <[EMAIL PROTECTED]> wrote: > [EMAIL PROTECTED] wrote: > > > I see here another case of a common erroneous approach to > > problem-solving. People are trying to enumerate definitions to > impose > > on something, rather than starting with the thing at hand and > > exhausting any clues it may provide before moving on. This can > lead to > > serious and, in hindsight, embarrassing mistakes. > > > > In this case, we are dealing with '^^', a meaningless > unpronounceable > > symbol. Oh, but wait ... we also spell it 'xor', which I suppose > is > > often pronounced "ex or", which might be the source of the > difficulty. > > Because 'xor' stands for ... ... 'exclusive or'. Exclusive? > It's not > > hard to figure out what that means. Here are some of the > relevant > > dictionary definitions: > > > > Not allowing something else; incompatible: mutually exclusive > > conditions > > Not accompanied by others; single or sole > > > > So what does that say about proposing that xor(p1,p2,...) is true > if an > > odd number of p[i] are true? Other than that people should > pronounce > > these operators out loud more often? > > > > Clearly, xor is true iff *exactly* one of its arguments is true, > and of > > course it should return that argument (or bool::false if no > argument is > > true). > > > > That should now be so blatantly obvious that everyone should be > > embarrassed for not having seen it immediately. But don't run > from > > embarrassment (or become defensive and attack the messenger) -- > it's a > > powerful tool (which is why we evolved to have it). It should > cause > > one to question one's thought processes and consider how to > improve > > upon them, which is all to the good, isn't it? > > Except that xor or ^^ is only a binary operation, there is no > "xor(p1,p2,...)", only "p1 xor p2 xor ..." which can really only be > > understood if you add () to disambiguate the order that the binary > ops > are performed. Fortunately, xor is associative so it doesn't > matter how > you add the (), you get the same answer. Try it out, you will > discover > that "p1 xor p2 xor ..." is true iff an odd number of the p's are > true. > As long as you build "p1 xor p2 xor ..." out of binary xor ops > that is > the result you get. Computing parity is much more common that your > > multi-arg operation. Besides, all the literature about logic and > circuit design define "p1 xor p2 xor ..." in terms of binary xor, > so > your trying to buck hundreds of years of consensus.
Sorry, but you're quite wrong here, because that literature applies to an associative operator, which Perl's xor is not. ((1 xor 2) xor 3) == 3, while (1 xor (2 xor 3)) == 1. I again ask that you pay more attention to the thing you're dicussing, rather than to simply generate stuff out of your own head, so as to avoid trivial embarrassing error. You wrote q(Try it out, you will discover that "p1 xor p2 xor ..." is true iff an odd number of the p's are true) -- this fails on two counts; 1) it begs the question, which was how "p1 xor p2 xor p3" should be evaluated -- it can only be "tried out" if that answer has already been decided upon; and it ignores the context of the discussion in which it has been noted that the value of "p1 xor p2" is either p1 or p2 or bool::false, but not "true". The literature on logic design treats n-ary exclusive xor as modular arithmetic, which is natural to do since it is an associative operator. But it provides no guidance as to the value of "1 xor 2 xor 3", nor do your remarks, starting out with your claim that there is no "xor(p1,p2,...)". The language is being defined, so such claims are meaningless; there is no reason why xor cannot be an n-ary function. My position is that it should either have its linguistic meaning, or expressions of the form "p1 xor p2 xor p3" should be disallowed, since there is no other natural meaning for it. bool::true is not an acceptable result (unless one of p1, p2, or p3 is bool::true), and simply picking one or the other of p1, p2, and p3 when they are all true is arbitrary. All of which was obvious if you were to follow my advice about problem solving. -- ts Yahoo! Mail Stay connected, organized, and protected. Take the tour: http://tour.mail.yahoo.com/mailtour.html