Pure Functions in rules
- To: mathgroup at smc.vnet.net
- Subject: [mg15932] Pure Functions in rules
- From: wself at viking.emcmt.edu (Will Self)
- Date: Wed, 17 Feb 1999 23:34:01 -0500
- Sender: owner-wri-mathgroup at wolfram.com
It appears that I cannot depend on using a pure function
in a pattern-matching rule.
Here I am trying to convince reluctant students that they're
better off learning to use Mathematica than doing things
by hand, and we run across something like this, and in a
much more complicated situation where the trouble was
hard to isolate.
I am quite frankly incensed by the behavior shown in
In/Out 80, below. Look at these examples:
In[73]:= {1,2,3}/.(m_List->7)
Out[73]= 7
In[74]:= {1,2,3}/.(m_List->(2*m))
Out[74]= {2,4,6}
In[75]:= 2*#& /@ {1,2,3}
Out[75]= {2,4,6}
In[77]:= f[m_List]:=2*#& /@ m
In[78]:= f[{1,2,3}]
Out[78]= {2,4,6}
In[79]:= {1,2,3}/.m_List->f[m]
Out[79]= {2,4,6}
Now try this:
In[80]:= {1,2,3}/.(m_List->(2*#& /@ m))
Out[80]= {1,2,3}
Does anyone (say, at WRI for example) care to comment on
this?
Will Self