Re: pattern matching against the Dt function?
- To: mathgroup at smc.vnet.net
- Subject: [mg85263] Re: pattern matching against the Dt function?
- From: "Steve Luttrell" <steve at _removemefirst_luttrell.org.uk>
- Date: Tue, 5 Feb 2008 05:54:56 -0500 (EST)
- References: <fo6h46$r20$1@smc.vnet.net>
You need to use HoldPattern. In[1]:= {f[a],Dt[b]}/.HoldPattern[Dt[n_]]->n Out[1]= {f[a],b} Stephen Luttrell West Malvern, UK "Adam M." <adamm at san.rr.com> wrote in message news:fo6h46$r20$1 at smc.vnet.net... > Hello, > > I'm having trouble matching the Dt function with a pattern, even though > it works for all other functions I've tried. > > (*It doesn't match Dt[b] here.*) > In[101]:= {f[a], Dt[b]} /. Dt[n_]->n > Out[101]= {f[a], Dt[b]} > > (*But it matches f[a] with no problem.*) > In[100]:= {f[a], Dt[b]} /. f[n_]->n > Out[100]= {a, Dt[b]} > > (*In a process of elimination, I tried another built-in function, D, and > it worked fine.*) > In[99]:= {f[a], D[b]} /. D[n_]->n > Out[99]= {f[a], b} > > (*I tried another function more than one character long, Sin, and that > works.*) > In[102]:= {f[a], Sin[b]} /. Sin[n_]->n > Out[102]= {f[a], b} > > (*The full forms all seem to follow the same pattern.*) > In[103]:= Sin[b] // FullForm > Out[103]//FullForm= Sin[b] > > In[104]:= Dt[b] // FullForm > Out[104]//FullForm= Dt[b] > > In[105]:= f[b] // FullForm > Out[105]//FullForm= f[b] > > (*I thought it might be related to the evaluation of the Dt function, so > I tried Holding it. No luck.*) > In[111]:= {f[a], Hold[Dt[b]]} /. Dt[n_]->n > Out[111]= {f[a], Hold[Dt[b]]} > > (*However, it has no problem matching f[a] in a Hold.*) > In[112]:= {Hold[f[a]], Dt[b]} /. f[n_]->n > Out[112]= {Hold[a], Dt[b]} > > (*I tried looking at the attributes to find out if there was something > special about the Dt function, but it doesn't seem like it...*) > In[116]:= Attributes[Sin] > Out[116]= {Listable, NumericFunction, Protected} > > In[117]:= Attributes[D] > Out[117]= {Protected, ReadProtected} > > In[118]:= Attributes[Dt] > Out[118]= {Protected} > > I've read every section on pattern matching in the documentation center, > and I'm at a complete loss to explain why I can't seem to match the Dt > function with the Dt[n_] pattern when I can match these other functions. > I know I can use the _Dt pattern to match it, but then I don't get > control over matching the arguments... > > Thank you. > > Very curious, > -- Adam M. >