[Date Index] [Thread Index] [Author Index]
Why does _+_==2_ (or, why is HoldPattern required for sensible matching)?
I'm a relatively new user of Mathematica, and the following behavior seems odd to me: In:= _ + _ Out= 2 _ Use of `Plus` here is just to illustrate a more general "problem with `Blank`. I had expected pattern objects to resist such evaluation. This is possibly related to the fact that I was surprised by the following: In:= Blank == Blank Out= True Since each Blank can match anything, I find this conceptually to be the wrong behavior. As an example of a counter-intuitive result: In:= MatchQ[a + b, _ + _] Out= False I understand that I can deal with this problem by using HoldPattern. In:= MatchQ[a + b, HoldPattern[_ + _]] Out= True So my question is not how to deal with the problem, but rather is a request for an explanation of why the current pattern evaluation behavior is desirable. Thanks, Alan Isaac