MathGroup Archive 2008

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

Search the Archive

Re: pattern matching against the Dt function?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg85264] Re: pattern matching against the Dt function?
  • From: dh <dh at metrohm.ch>
  • Date: Tue, 5 Feb 2008 05:55:27 -0500 (EST)
  • References: <fo6h46$r20$1@smc.vnet.net>


Hi Adam,

it is always a good idea too look at your expressions using FullForm. 

Try this and you will see that Dt[n_] is evaluated (by defalut, the left 

hand side of a replacement rule is evaluated). To prevent evaluation for 

pattern matching, wrap the pattern with HoldPattern:

HoldPattern[Dt[n_]]

hope this helps, Daniel



Adam M. wrote:

> 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.

> 




  • Prev by Date: RE: Fourier Series Expansions and it's Coefficients question revised tia
  • Next by Date: Re: pattern matching against the Dt function?
  • Previous by thread: Re: pattern matching against the Dt function?
  • Next by thread: Re: pattern matching against the Dt function?