[Date Index]
[Thread Index]
[Author Index]
Why does _+_==2_ (or, why is HoldPattern required for sensible matching)?
*To*: mathgroup at smc.vnet.net
*Subject*: [mg132222] Why does _+_==2_ (or, why is HoldPattern required for sensible matching)?
*From*: Alan <alan.isaac at gmail.com>
*Date*: Mon, 20 Jan 2014 03:59:45 -0500 (EST)
*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com
*Delivered-to*: l-mathgroup@wolfram.com
*Delivered-to*: mathgroup-outx@smc.vnet.net
*Delivered-to*: mathgroup-newsendx@smc.vnet.net
I'm a relatively new user of Mathematica, and the following behavior seems odd to me:
In[1]:= _ + _
Out[1]= 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[2]:= Blank[] == Blank[]
Out[2]= 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[3]:= MatchQ[a + b, _ + _]
Out[3]= False
I understand that I can deal with this problem by using HoldPattern.
In[4]:= MatchQ[a + b, HoldPattern[_ + _]]
Out[4]= 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
Prev by Date:
**Re: Compact formulation of array of constraints**
Next by Date:
**BSplineSurface & BSplineFunction_Extracting Data**
Previous by thread:
**Re: How to show 1+2+3+ ... = -1/12 using Mathematica's symbols?**
Next by thread:
**Re: Why does _+_==2_ (or, why is HoldPattern required for**
| |