• To: mathgroup at smc.vnet.net
• Subject: [mg46805] RE: [mg46788] ReplaceList -- Unexpected Answer
• From: "David Park" <djmp at earthlink.net>
• Date: Tue, 9 Mar 2004 04:30:48 -0500 (EST)
• Sender: owner-wri-mathgroup at wolfram.com

```Harold,

Because ReplaceList is not working the way you are thinking. It only applies
the rule to the ENTIRE expression.

However, in the ReplaceList Examples the following routine is given...

ReplaceAllList[expr_, rules_] :=
Module[{i},
Join[ReplaceList[expr, rules],
If[AtomQ[expr], {},
Join @@ Table[
ReplacePart[expr, #, i] & /@ ReplaceAllList[expr[[i]], rules],
{i,
Length[expr]}]]]]

ReplaceAllList[ {f[h[4], h[4]], f[h[4], h[5]]}, f[x : h[_], x_] -> r[x] ]
{{r[h[4]], f[h[4], h[5]]}}

David Park

From: Harold Noffke [mailto:Harold.Noffke at wpafb.af.mil]
To: mathgroup at smc.vnet.net

MathGroup:

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]] }.

Regards,
Harold

```

• Prev by Date: Re: ReplaceList -- Unexpected Answer
• Next by Date: Re: Problem with Mathematica driving me nuts