Re: ReplaceList -- Unexpected Answer
- To: mathgroup at smc.vnet.net
- Subject: [mg46798] Re: ReplaceList -- Unexpected Answer
- From: bobhanlon at aol.com (Bob Hanlon)
- Date: Tue, 9 Mar 2004 04:30:41 -0500 (EST)
- References: <c2hdqc$aeq$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
ReplaceList "attempts to transform the entire expression". If instead you want it applied to the first level subexpressions: ReplaceList[#,f[x:h[_],x_]->r[x]]& /@ {f[h[4],h[4]],f[h[4],h[5]]} // Flatten {r[h[4]]} Bob Hanlon In article <c2hdqc$aeq$1 at smc.vnet.net>, Harold.Noffke at wpafb.af.mil (Harold Noffke) wrote: << In The Mathematica 5 Book, Section 2.3.3 Naming Pieces of Patterns, we find the following pattern matching exercise ... Now both arguments of f are constrained to be the same, and only the first case matches. In[5]:= {f[h[4], h[4]], f[h[4], h[5]]} /. f[x:h[_], x_] -> r[x] Out[5]= {r[h[4]],f[h[4],h[5]]} Now, let's use ReplaceList to get more insight into this matching process ... In[6]:= ReplaceList[ {f[h[4],h[4]],f[h[4],h[5]]},f[x:h[_],x_] -> r[x] ] Out[6]= {} I do not understand why ReplaceList returns {} instead of { r[h[4]] }.