MathGroup Archive 2012

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

Search the Archive

Re: Fine control of evaluation

  • To: mathgroup at smc.vnet.net
  • Subject: [mg126470] Re: Fine control of evaluation
  • From: "djmpark" <djmpark at comcast.net>
  • Date: Sat, 12 May 2012 04:57:18 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <13064693.4533.1336710718460.JavaMail.root@m06>

This is easy using either the EvaluateAt or EvaluateAtPattern functions in
the Presentations Application.

<< Presentations` 

func1[x_] := f[x];
func2[x_] := g[x]; 

HoldForm[func1[x] + func2[x]] 
% // EvaluateAt[{1, 1}] 

func1[x] + func2[x] 
f[x] + func2[x] 

HoldForm[func1[x] + func2[x]] 
% // EvaluateAtPattern[_func1] 

func1[x] + func2[x] 
f[x] + func2[x] 


David Park
djmpark at comcast.net 
http://home.comcast.net/~djmpark/index.html 


From: Brentt [mailto:brenttnewman at gmail.com] 


Hello, I am struggling with evaluation control and was hoping someone might
point me in the right direction. I vaguely remember seeing something in the
manual or the tutorials addressing this issue, but I can't find the section
I saw it in.

How does one get fine control over things wrapped in Hold and HoldForm. Say
I have some functions

func1[x_]:= f[x];
func2[x_] := g[x];
step1 = HoldForm[ func1[x]+ func2[x] ];

Now say I want the statements wrapped in HoldForm,  func1[x]+ func2[x]  to
evaluate to f[x]+ func2[x]

I thought naturally it would be something like

step2 = HoldForm[ Evaluate[func1[x]]+ func2[x] ] ;

 But then HoldForm seems a bit overzealous about it's task, and outputs
Evaluate[func1[x]]+ func2[x]---it leaves Evaluate unevaluated.  (I tried
wrapping it func1[x] in ReleaseHold to no avail.)

The above is just pseudocode, Maybe there is some specifics about what I was
actually doing that was causing the unintuitive behavior (i.e. HoldForm
holding Evaluate, instead of, well, evaluating.) What I was doing was more
along these lines:
----------------
ubounds= {u,0, pi};
vbounds={v,0,2pi};
t[dir_]:= D[s[u,v],dir_];    (*where dir_ is going to be either u or v*)

(*here is the difficult part:*)
formattedOutput= Integrate[HoldForm[t[u]] , ubounds, vbounds ]
//TraditionalForm;
----------------
The issue is that I want the t[u] wrapped in the HoldForm to evaluate to
D[s[u,v],dir_], and hold that. If I wrap it in Evaluate, HoldForm holds
Evaluate (puzzling), and tries to integrate Evaluate as if it is the
integrand. I've tried all kinds of permutations of HoldForm, Defer,
ReleaseHold, Evaluate, and I haven't had anything to work.

Thank you for any help or pointing me in the right direction




  • Prev by Date: calibrating optimal taxation models (Saez 2001)
  • Next by Date: Re: question: fitting a distribution from quantiles
  • Previous by thread: Re: Fine control of evaluation
  • Next by thread: Re: Fine control of evaluation