MathGroup Archive 2004

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

Search the Archive

HoldPattern & Pattern Matching


Dear all,

I don't understand the following behavior of Mathematica 4.2:


In[1]:= $Version
Out[1]= 4.2 for Linux (August 23, 2002)

In[2]:= mysum = h[a] - 7h[b]
Out[2]= h[a] - 7 h[b]

In[3]:= mysum /. HoldPattern[Plus[aaa : (_.*h[_]) ..]] :> aaa
Out[3]= h[a] - 7 h[b]

In[4]:= mysum /. HoldPattern[Plus[aaa : (_.*h[_]) ..]] :> aaa // Trace
Out[4]= {{mysum, h[a] - 7 h[b]},
  >    h[a] - 7 h[b] /. HoldPattern[Plus[aaa:((_.) h[_]..)]] :> aaa,
  >    Plus[Sequence[h[a], -7 h[b]]], h[a] - 7 h[b]}


The pattern matching should work for an arbitrary number of terms, 
that's why I used Repeated[...], i.e. the "..".

I hoped to get Sequence[ h[a], -7 h[b] ].   I dont understand why 
Sequence[...] is wrapped by Plus[...]. What did I miss?

Many thanks!
Paul.


  • Prev by Date: Re: ExpandAll Problem with Rules
  • Next by Date: Re: 5 variables Guass isnt working, matrix solution
  • Previous by thread: Re: expresion with variables from a list
  • Next by thread: Re: HoldPattern & Pattern Matching