Re: xor condition

2011-07-20 Thread Jesse Glick

On 07/16/2011 08:59 PM, Matt Benson wrote:

xor(true, false) == true
xor(true, false, true) == false
xor(true, false, true, false) == false

Is this correct?


Follows the usual semantics; cf.: 
http://en.wikipedia.org/wiki/Exclusive_or#Associativity_and_commutativity


It would seem that semantically an xor over multiple
nested conditions should mean that exactly one value should evaluate
true in order for the xor operation to yield truth.


Which is in fact the case in the examples you mentioned, but probably you are 
thinking of

xor(true, true, true) == true

which is consistent with the algebraic definition, and the behavior of Java's ^ operator for that matter. If you wanted a condition with the semantics you describe, it 
should be named something else.



-
To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
For additional commands, e-mail: dev-h...@ant.apache.org



Re: xor condition

2011-07-20 Thread Matt Benson
On Wed, Jul 20, 2011 at 5:44 AM, Jesse Glick jesse.gl...@oracle.com wrote:
 On 07/16/2011 08:59 PM, Matt Benson wrote:

 xor(true, false) == true
 xor(true, false, true) == false
 xor(true, false, true, false) == false

 Is this correct?

 Follows the usual semantics; cf.:
 http://en.wikipedia.org/wiki/Exclusive_or#Associativity_and_commutativity

 It would seem that semantically an xor over multiple
 nested conditions should mean that exactly one value should evaluate
 true in order for the xor operation to yield truth.

 Which is in fact the case in the examples you mentioned, but probably you
 are thinking of

 xor(true, true, true) == true

 which is consistent with the algebraic definition, and the behavior of
 Java's ^ operator for that matter. If you wanted a condition with the
 semantics you describe, it should be named something else.


Thanks, Jesse--I think you cleared it up in my head:

and(x, y, z) = x  y  z
or(x, y, z) = x | y | z
xor(x, y, z) = x ^ y ^ z

Thanks!

Matt


 -
 To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
 For additional commands, e-mail: dev-h...@ant.apache.org



-
To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
For additional commands, e-mail: dev-h...@ant.apache.org



xor condition

2011-07-16 Thread Matt Benson
Currently each nested condition is xor'd against the cumulative result, thus:

xor(true, false) == true
xor(true, false, true) == false
xor(true, false, true, false) == false

Is this correct?  It would seem that semantically an xor over multiple
nested conditions should mean that exactly one value should evaluate
true in order for the xor operation to yield truth.

Matt

-
To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
For additional commands, e-mail: dev-h...@ant.apache.org



Re: xor condition

2011-07-16 Thread Stefan Bodewig
On 2011-07-17, Matt Benson wrote:

 Currently each nested condition is xor'd against the cumulative result, thus:

 xor(true, false) == true
 xor(true, false, true) == false
 xor(true, false, true, false) == false

 Is this correct?  It would seem that semantically an xor over multiple
 nested conditions should mean that exactly one value should evaluate
 true in order for the xor operation to yield truth.

While my gut feeling agrees with what you describe the documentation of
the xor description actually says

,
| It only evaluates to true if an odd number of nested conditions are true.
`

If you need the other kind of xor then a new container would be
required.  exactlyOneOf or something similar?

Stefan

-
To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
For additional commands, e-mail: dev-h...@ant.apache.org



Re: xor condition

2011-07-16 Thread Matt Benson
On Sat, Jul 16, 2011 at 10:21 PM, Stefan Bodewig bode...@apache.org wrote:
 On 2011-07-17, Matt Benson wrote:

 Currently each nested condition is xor'd against the cumulative result, thus:

 xor(true, false) == true
 xor(true, false, true) == false
 xor(true, false, true, false) == false

 Is this correct?  It would seem that semantically an xor over multiple
 nested conditions should mean that exactly one value should evaluate
 true in order for the xor operation to yield truth.

 While my gut feeling agrees with what you describe the documentation of
 the xor description actually says

 ,
 | It only evaluates to true if an odd number of nested conditions are true.
 `


So is this an accepted kind of xor?

 If you need the other kind of xor then a new container would be
 required.  exactlyOneOf or something similar?

I don't need it, personally, yet.  Was working in Commons Lang,
noticed the discrepancy between oacl.BooleanUtils.xor() and Ant's xor
condition, and wanted to follow up.

br,
Matt


 Stefan

 -
 To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
 For additional commands, e-mail: dev-h...@ant.apache.org



-
To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
For additional commands, e-mail: dev-h...@ant.apache.org



Re: xor condition

2011-07-16 Thread Stefan Bodewig
On 2011-07-17, Matt Benson wrote:

 ,
 | It only evaluates to true if an odd number of nested conditions are true.
 `

 So is this an accepted kind of xor?

Accepted by the original author (Steve IIRC), silently accepted by all
reviewers back then and in a way accepted as that's what it does by
Ant's users, I guess 8-)

Stefan

-
To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
For additional commands, e-mail: dev-h...@ant.apache.org