Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2007

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

Search the Archive

Re: "dereference" variable

  • To: mathgroup at smc.vnet.net
  • Subject: [mg82071] Re: [mg82033] "dereference" variable
  • From: Todd Johnson <johnsong at ics.uci.edu>
  • Date: Thu, 11 Oct 2007 00:20:27 -0400 (EDT)
  • References: <200710100822.EAA26488@smc.vnet.net> <30346C40-5665-4B7C-B0FA-96E651F05229@jeol.com>

>> so that what L actually receives is a value like "s$123456". Q, on 
>> the other hand, evaluates "s" entirely, and arrives at "20*k". You 
>> may wonder, "but wait, that is what s evaluates to, why can't your 
>> code deal with that?" The simplest answer is that sometimes 
>> Mathematica seems to decide erroneously that the summation can be 
>> turned into multiplication,
>
> It's not erroneous you need to follow the evaluation sequence, 
> Mathematica does not operate the way languages like C or Java do, it 
> uses a strict read eval loop, it reads an expression checks if there's 
> a rule that can be used to evaluate it and continues doing so until 
> there is nothing left to evaluate. For that matter the idea of 
> references and passing by value or reference does not map well.
>
>> which leaves me with dummy variables from summations lying around 
>> unbound.
>
> What variables are unbound? I don't see any.


I'm sorry, I wasn't very clear. This was a very much stripped 
down/faked-up version of the code which has these problems. This code 
doesn't have any unbound variables because it's so simple. But sometimes 
I'll write something like

Sum[Sum[j,{j, 1, 
someweird[nestedexpression[with,i,as,an,argument,somewhere]]}],{i,1,imax}]

and get

imax*Sum[j,{j, 1, 
someweird[nestedexpression[with,i,as,an,argument,somewhere]]}]

and now the "i" in the iterator for the inner loop doesn't have any 
meaning.

Although, to be honest, I haven't seen an example of that behavior in a 
while, so I can't draw up an example that displays it.

>> Also, this is a problem at other times, such as when there is an 
>> appreciable difference between "x[[i]]-x[[i]]" and "0", because I 
>> really mean "x[[i]]" to stand in for some vector of as-yet-unknown 
>> length, so that it minus itself is a zero vector, which is different 
>> from plain 0.
>
> Again you are fighting the evaluation sequence, if you don't want to 
> evaluate x[[i]]-x[[i]] because you are going to define an evaluation 
> rule for x later, you shouldn't evaluate that expression until the 
> right time.


The goal of the bit of code I'm writing is to examine/modify/optimize 
some code to be executed later, so it's not really an option to wait 
until I have a value for x.


> s=mySum[x,{k,1,20}]
>
> L[mySum[x__]]:=Print["here"]

I tried that, and it works OK. But I lose a lot of Mathematica's 
knowledge of the properties of Sum, which I would rather not do.

>
> Regards,
>

Thanks for your help. It seems pretty clear that what I want to do can't 
be done, and I will just have to work around that.

> Ssezi

todd.


  • Prev by Date: Re: Re: rule based program for "Deleting repeated members of a list."
  • Next by Date: Re: Re: How much memory is needed?
  • Previous by thread: "dereference" variable
  • Next by thread: Re: "dereference" variable