Re: Dt@x@1
- To: mathgroup at smc.vnet.net
- Subject: [mg119400] Re: Dt@x@1
- From: Chris Chiasson <chris.chiasson at gmail.com>
- Date: Thu, 2 Jun 2011 07:14:51 -0400 (EDT)
- References: <is4tgc$b3t$1@smc.vnet.net> <is55ug$d2e$1@smc.vnet.net>
On Jun 1, 5:57 am, "Nasser M. Abbasi" <n... at 12000.org> wrote: > On 6/1/2011 1:33 AM, Chris Chiasson wrote: > > > Why does Dt@x@1 return zero? > > Dt[ x[1] ] > > The last evaluation of x[1] in the call gave 1, and this is > what is left and is passed to Dt and then Dt[1] returns zero. > > You can see that by > > ----------------------- > > In[65]:= Remove["Global`*"] > > TracePrint@Dt [ x[1] ] > During evaluation of In[65]:= Dt[x[1]] > During evaluation of In[65]:= Dt > During evaluation of In[65]:= x[1] > During evaluation of In[65]:= x > During evaluation of In[65]:= 1 > During evaluation of In[65]:= 0 > Out[66]= 0 > > ------------------------------ > > But what I do not know, is why when typing > > In[84]:= x[1] > > one gets back > > Out[84]= x[1] > > and so, now it did not 'evaluate' to 1 like it seems to have > done inside Dt call above. > > I can see that x[1] should return x[1], but I am not sure > why x[1] ended 1 inside the Dt call as shown by the trace above > and not when typing it on the top level. > > This is for the experts to explain, something to do with how > different evaluation rules works in different contexts I suppose. > > --Nasser Just shooting from the hip: The 1 that you are seeing is just Mathematica attempting to evaluate the argument of a function before looking for DownValues of x. I.e. x[1+1] would see {1+1,2} in its evaluation chain, or 1+1 newline 2 at the same indentation level in the TracePrint.