Re: Not[OddQ] is not the same as EvenQ (sometimes)
- To: mathgroup at smc.vnet.net
- Subject: [mg3899] Re: Not[OddQ] is not the same as EvenQ (sometimes)
- From: wagner at motel6.cs.colorado.edu (Dave Wagner)
- Date: Sat, 4 May 1996 23:24:13 -0400
- Organization: University of Colorado, Boulder
- Sender: owner-wri-mathgroup at wolfram.com
In article <4m1hq2$pq4 at dragonfly.wolfram.com>,
Arnold Seiken <SEIKENA at gar.union.edu> wrote:
>Dear Mathematica experts,
>
>Position[{2,3,4,5,6,7}, x_?(EvenQ[#]&)]
>{{1}, {3}, {5}}
>Position[{2,3,4,5,6,7}, x_?(!OddQ[#]&)]
>{{0}, {1}, {3}, {5}}
>Therefore, for this example, the pattern x_?(EvenQ[#]&) is not equivalent to
>the pattern x_?(!OddQ[#]&). The latter matches with the head List of
>{2,3,4,5,6,7}, the former does not.
That's because if a is a symbol without any numeric values (e.g., a = List),
OddQ[a] == EvenQ[a] == False.
> But
>Position[{-2,3,4,-5,6,7}, x_?(NonNegative[#]&)]
>{{2}, {3}, {5}, {6}}
>Position[{-2,3,4,-5,6,7}, x_?(!Negative[#]&)]
>{{2}, {3}, {5}, {6}}
>shows that the Head List is sometimes ignored by Position.
Wrong explanation. Negative[List] returns Negative[List]. Therefore
Not[Negative[List]] is not equal to True, so Position does not return {0}.
The general rule is that functions ending with "Q" always return either
True or False (there are some exceptions, such as LegendreQ, which is not
a predicate); functions that do not end with "Q" may return unevaluated.
You can force any function that doesn't return an explicit False to do
so by wrapping TrueQ around it.
NegativeQ[x_] := TrueQ[Negative[x]]
The fact that Negative, Positive, etc. don't do quite what you expect
is understandably annoying.
> Finally
>Position[{1,3,5}, x_?(!OddQ[#]&)]
>{{0}}
Consistent with above explanation.
>Position[{2,3,4,5,6,7}, x_?(!NumberQ[#]&)]
>{{0}, {}}
{0} is consistent with above explanation.
I don't know the cause of the empty set of list braces here.
Try using Trace to see where they're coming from.
>Position[{2,3,4,5,6,7}, x_?(!Positive[#]&)]
>{}
Consistent with above explanation.
Dave Wagner
Principia Consulting
(303) 786-8371
dbwagner at princon.com
http://www.princon.com/princon
==== [MESSAGE SEPARATOR] ====