Re: Pure Functions in rules
- To: mathgroup at smc.vnet.net
- Subject: [mg15983] Re: Pure Functions in rules
- From: "Seth Chandler" <SChandler at uh.edu>
- Date: Fri, 19 Feb 1999 03:27:03 -0500
- Organization: University of Houston
- References: <7ag34l$aie@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
If you try {1,2,3}/.(m_List:>(2*#&/.m)) you get the behavior I believe you
desire. Using Rule rather than RuleDelayed causes a problem because, until
there is a specific value of m, Mathematica can't Map the way you want.
Seth J. Chandler
Associate Professor of Law
University of Houston Law Center
Will Self wrote in message <7ag34l$aie at smc.vnet.net>...
>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
>