MathGroup Archive 2010

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

Search the Archive

Trouble with Unevaluated

  • To: mathgroup at
  • Subject: [mg109946] Trouble with Unevaluated
  • From: Derek Yates <yatesd at>
  • Date: Wed, 26 May 2010 07:07:49 -0400 (EDT)

I think I understand how Unevaluated works, but then get stuck very
easily. For example, here is a simplified version of something I am
trying to do. I have the following already defined:


I want to create the definition TotalRevenue:=Revenue[EUR]+Revenue[GBP]
+Revenue[USD]. I want it to be a DownValue since Revenue[EUR] may get
changed and I want TotalRevenue to automatically update. I also want
to create the DownValue programmatically (since the currencies as well
as the number of currencies will change and will be an input to my

My first idea was:
assuming I already have currs={EUR,GBP,USD}


but this gives TotalRevenue:={Unevaluated[Revenue[EUR]]
+Unevaluated[Revenue[GBP]]+Unevaluated[Revenue[USD]]}. I have to force
evaluation using Evaluate/@TotalRevenue every time I wish to use it.

(where I used Information[TotalRevenue] to examine the DownValue)

I eventually found the following (which works) but feels overly

 With[{vals = f /@ currs},
  With[{vals2 = Hold[vals] /. f -> Revenue},
   With[{vals3 = Unevaluated @@ vals2}, TotalRevenue := vals3]]]]

Hopefully somebody can suggest a more elegant solution.

  • Prev by Date: Re: Dot product confusion
  • Next by Date: Re: Dot product confusion
  • Previous by thread: Wrong result for definite integral
  • Next by thread: Re: Trouble with Unevaluated