Re: MatchQ, silly question

*To*: mathgroup at smc.vnet.net*Subject*: [mg105188] Re: MatchQ, silly question*From*: David Bailey <dave at removedbailey.co.uk>*Date*: Tue, 24 Nov 2009 05:46:07 -0500 (EST)*References*: <he5v9i$3gh$1@smc.vnet.net> <he896k$q8g$1@smc.vnet.net> <heb6gi$ah5$1@smc.vnet.net>

janos wrote: > An alternative solution from my student, Attila L=E1szl=F3 NAGY is: > > MatchQ[3 x^2, #] & /@ {3 x_^2, > 3 x_^_, _ x_^_, _ _Symbol^_, _ (_Symbol^_), _*(_Symbol^_)} > > J=E1nos > ************************************************************************** > > On nov. 21, 09:43, David Bailey <d... at removedbailey.co.uk> wrote: >> janos wrote: >>> MatchQ[3 x^2, #] & /@ {3 x_^2, 3 x_^_, _ x_^_, _ _^_, _ (_^_), _ * >>> (_^_)} >>> dives False in the last cases. Why? The FullForm >>> Power[Blank[ ],Plus[1,Blank[ ]]] >>> contains Plus, why? >>> Thank you. >>> J=E1nos >> Because expressions still evaluate, even if they contain Blank[] - this >> can be easily seen by entering the expression _+_ . >> >> Wrap the pattern in HoldPattern to prevent evaluation. >> >> David Baileyhttp://www.dbaileyconsultancy.co.uk > > This works because _ and _Symbol don't look the same to Mathematica when it does its arithmetic. The only problem with that approach, is that you might re-use the code in a slightly more complicated context and hit problems again. David Bailey http://www.dbaileyconsultancy.co.uk