0
|
3699 Views
|
3 Replies
|
1 Total Likes
View groups...
Share
Share this post:
GROUPS:

# Unexpected result from a pattern constraint with the construct ?test

Posted 9 years ago
 Hello Below is a line which works as expected:  Cases[\!$$\* TagBox[ StyleBox[ RowBox[{"Times", "[", RowBox[{ RowBox[{"Power", "[", RowBox[{"_", ",", "n_"}], "]"}], ",", "x_"}], "]"}], ShowSpecialCharacters->False, ShowStringCharacters->True, NumberMarks->True], FullForm]$$ /; EvenQ[n]] @@ {1 + y x^2 + y x^3 }  I expect the line below to have an identical result (only change: use of the n?EvenQ construct instead of EvenQ[n]).  Cases[{ 1 + y x^2 + y x^3}, \!$$\* TagBox[ StyleBox[ RowBox[{"Times", "[", RowBox[{ RowBox[{"Power", "[", RowBox[{"_", ",", "n_"}], "]"}], ",", "x_"}], "]"}], ShowSpecialCharacters->False, ShowStringCharacters->True, NumberMarks->True], FullForm]$$ /; n?EvenQ, Infinity]  It is accepted by MMA but since it returns nothing, It must be interpreted differently. But how? True I always saw in examples that the construct form ' _?test' is being used but I never read that the _ cannot be replaced here by a pattern variable
3 Replies
Sort By:
Posted 9 years ago
 Is this what you're trying to do? In[6]:= Cases[{1 + y x^2 + y x^3}, Times[Power[_, n_?EvenQ], x_], Infinity] Out[6]= {x^2 y} 
Posted 9 years ago
 Yes it is. But do you know how my previous answer was interpreted by MMA.?
Posted 9 years ago
 Your previous version had incorrect syntax. As described in the documentation for Condition:https://reference.wolfram.com/language/ref/Condition.html"patt /; test is a pattern which matches only if the evaluation of test yields True".
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments