Re: Pure Functions in rules

• To: mathgroup at smc.vnet.net
• Subject: [mg16014] Re: [mg15932] Pure Functions in rules
• From: Clemens Frey <btml01 at uni-bayreuth.de>
• Date: Sat, 20 Feb 1999 02:52:05 -0500
• Sender: owner-wri-mathgroup at wolfram.com

```Hi Will!
of RuleDelayed; but you need evaluation after pattern matching, so
just analogously to using SetDelayed instead of Set when defining a
function you have to use RuleDelayed, and it will work as intended:

In[81] := {1,2,3}/.(m_List:>(2*#& /@ m))
Out[80] = {2,4,6}

Hope this helped
Clemens

------------------------------------------------------------
Clemens Frey
Doctoral Student at the
Department of Mathematics/BITOEK
University of Bayreuth(Germany)

clemens.frey at uni-bayreuth.de
http://www.bitoek.uni-bayreuth.de/~Clemens.Frey
------------------------------------------------------------

On Wed, 17 Feb 1999, Will Self wrote:

> 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
>

```

• Prev by Date: Re: implementing a stack
• Next by Date: Strange results from Integrate
• Previous by thread: Re: Pure Functions in rules
• Next by thread: Re: Pure Functions in rules