Re: basic pattern matching
- To: mathgroup at smc.vnet.net
- Subject: [mg114347] Re: basic pattern matching
- From: Peter Pein <petsie at dordos.net>
- Date: Wed, 1 Dec 2010 02:15:12 -0500 (EST)
- References: <id2mqa$isu$1@smc.vnet.net>
Am Tue, 30 Nov 2010 11:22:50 +0000 (UTC)
schrieb Peter Pein <petsie at dordos.net>:
> Dear group,
>
> I'm confused regarding defaults.
> In[1]:= MatchQ[x,a_*x]
> Out[1]= False
> this has been expected
>
> In[2]:= MatchQ[x,a_. *x]
> Out[2]= True
> this one too, but:
>
> In[3]:= Cases[x,a_.*x:>a]
> Out[3]= {}
> should have been {1} shouldn't it? If the pattern matches (see
> Out[2]) then with a_. == 1. (Bug or feature?)
>
> In[4]:= Cases[y+x,a_.*x:>a]
> Out[4]= {1}
> is OK.
>
> Any enlightenment is highly welcome,
> thanks in advance, Peter
>
> P.S.: $Version is 8.0 for Linux 64-bit (November 7, 2010)
>
Same Nonsense (?) holds for:
In[1]:= MatchQ[x, a_. + x]
Out[1]= True
In[2]:= Cases[x, a_. + x :> a] == {Default[Plus]}
Out[2]= False
Is there a hidden sense beyond this?
In[4]:= 5/.x_+a_.:>{x,a}
Out[4]= {5,0}
is again perfectly OK