MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Pattern gremlins.


On 12 Mar 2005, at 08:36, Josef Karthauser wrote:

>
> I obviously don't understand patterns like I thought that I did.
>
> Can someone tell me why this matches,
>
>     In:		a b c d e f g /. d f :> yes
>     Out:	a b c e f g yes
>
> but this doesn't,
>
>     In:		a b c d e f g /. x:d f :> yes
>     Out:	a b c d e f g
>
> ?
>
> Joe
> --
> Josef Karthauser (joe at tao.org.uk)	       http://www.josef-k.net/
> FreeBSD (cvs meister, admin and hacker)     http://www.uk.FreeBSD.org/
> Physics Particle Theory (student)   http://www.pact.cpes.sussex.ac.uk/
> ================ An eclectic mix of fact and theory. =================
>

I am not sure this will satisfy you as an explanation but at least the 
reason comes from the working of the FlatAttribute of Times which is 
being used to obtain a match. As this has nothing to do with 
multiplication it maybe illuminating to see it on an abstract example. 
Consider the following case where everything works as expected:

In[17]:=
G[a, b, c, G[d, e]] /. G[d, e] -> yes

Out[17]=
G[a, b, c, yes]

In[18]:=
G[a, b, c, G[d, e]] /. x:G[d, e] -> yes

Out[18]=
G[a, b, c, yes]


Let us now give G the Flat attribute:


SetAttributes[G, Flat];

You can see the phenomenon you had observed:


G[a, b, c, G[d, e]] /. G[d, e] -> yes


G[a, b, c, yes]


G[a, b, c, G[d, e]] /. x:G[d, e] -> yes


G[a, b, c, d, e]



Andrzej Kozlowski
Chiba, Japan
http://www.akikoz.net/andrzej/index.html
http://www.mimuw.edu.pl/~akoz/


  • Prev by Date: Re: Simplfying inside Sqrt
  • Next by Date: Re: Nested iterators in Compile
  • Previous by thread: Re: Pattern gremlins.
  • Next by thread: webMathematica