Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.soft-sys.math.mathematica > #16443

Why does _+_==2_ (or, why is HoldPattern required for sensible matching)?

From Alan <alan.isaac@gmail.com>
Newsgroups comp.soft-sys.math.mathematica
Subject Why does _+_==2_ (or, why is HoldPattern required for sensible matching)?
Date 2014-01-20 08:53 +0000
Message-ID <lbio5u$g6f$1@smc.vnet.net> (permalink)
Organization Time-Warner Telecom

Show all headers | View raw


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

Back to comp.soft-sys.math.mathematica | Previous | Next | Find similar | Unroll thread


Thread

Why does _+_==2_  (or, why is HoldPattern required for sensible matching)? Alan <alan.isaac@gmail.com> - 2014-01-20 08:53 +0000

csiph-web