Here's the same message, with less annoying word wrapping. (Especially
useful for mailers that show different levels of quotes in different
colours.)


Trewth Seeker wrote:
> Mark A. Biggar wrote:
> > Trewth Seeker 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 supppose 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.
(signatures removed)

Reply via email to