MathGroup Archive 1998

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

Search the Archive

Re: are nested patterns impossible?



Thomas,

does this help any:

In[202]:=pat= x_. u + y_:0  v
{MatchQ[u+10 v,pat],
        MatchQ[2 u+3v,pat],
        MatchQ[u*5,pat],
        MatchQ[u +5,pat],
        MatchQ[2+v ,pat]}

Out[202]=u x_.+y_:0
Out[203]={True,True,True,True,False}

In[206]:=pft=u * x_. +v* y_:0
{MatchQ[u+10 v,pft],
        MatchQ[2 u+3v,pft],
        MatchQ[u*5,pft],
        MatchQ[u+5 ,pft],
        MatchQ[2+v ,pft]}

Out[206]=u x_.+v (y_:0)
Out[207]={True,True,False,False,False}

Should we call this "the limits of commutativity in patterns"?


wouter.

At 23:10 2-03-98 -0500, Thomas Lemm wrote:
>I try to create a pattern describing a linear combination of a list of
>variables. Be those variables u and v, the pattern should match for
>both
>
>u*k+v*l (k,l constants)
>
>and 
>
>u*k     (coefficient of v == 0)
>
>But when I program it in using nested patterns
>
>In[82]:=pat=u*_.+(v*_.|0)
>Out[82]=(v _.|0)+u _.
>
>In[84]:=MatchQ[u*5+v*10,pat]
>Out[84]=True
>
>In[86]:=MatchQ[u*5,pat]
>Out[86]=False
>
>The last case does not match, which leads to the question:  what did I
>program and how can I program the thing I intended to?
>
>I already know about the possibility making a pattern like
>
>u*_.+v*_.|u*_.
>
>But this is not the way I want to program this example as I would like 
>to extend this case to many more than two variables u,v.
>
>Thomas Lemm
>
>
Dr. Wouter L. J. MEEUSSEN
w.meeussen.vdmcc@vandemoortele.be
eu000949@pophost.eunet.be




  • Prev by Date: Re: Previous variable affects "/."
  • Next by Date: Re: Previous variable affects "/."
  • Prev by thread: are nested patterns impossible?
  • Next by thread: Re: are nested patterns impossible?