MathGroup Archive 2008

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

Search the Archive

Re: Putting an expression into a module

  • To: mathgroup at smc.vnet.net
  • Subject: [mg84886] Re: Putting an expression into a module
  • From: dh <dh at metrohm.ch>
  • Date: Fri, 18 Jan 2008 05:44:14 -0500 (EST)
  • References: <fmngh8$3fl$1@smc.vnet.net>


Hi Hugh,

here is a solution. You must first prevent evaluation, replace the 

expression and then allow evaluation:

Hold[f[]:=Module[{x=e1},Print[x]]] /. e1\[Rule]e   // ReleaseHold

Why your attempts did not work, see below.

hope this helps, Daniel



Hugh wrote:

> Suppose you have generated a long symbolic expression, e, and now wish

> to  use the expression inside a Module. One method would be to cut-and-

> paste the expression into the Module but how do you do this without

> cutting-and-pasting?

> Below in a warm up problem I first get what I want by cutting-and-

> pasting and then try various combinations of Hold, ReleaseHold and

> Evaluate. These don't work (why?) but how can it be done?

> 

> Thanks

> Hugh Goyder

> 

> e = y^2 - x^2

> 

> ClearAll[f];

> f[x_] := Module[{y}, y /. FindRoot[y^2 - x^2, {y, 1}]]

> 

> ClearAll[f];

> ReleaseHold[f[x_] := Hold[Module[{y}, y /. FindRoot[e1, {y, 1}]]] /.

> e1 -> e]

ReleaseHold only removes one layer of Hold, It does not remove "inner Holds"

> 

> ClearAll[f];

> ReleaseHold[

>  f[x_] := Evaluate[Hold[Module[{y}, y /. FindRoot[e1, {y, 1}]]] /.

>          e1 -> e]]

same as above

> 

> ClearAll[f];

> Evaluate[ReleaseHold[

>   f[x_] := Hold[Module[{y}, y /. FindRoot[e1, {y, 1}]]] /.

>          e1 -> e]]

same as above

> 

> ClearAll[f];

> ReleaseHold[

>  f[x_] := Evaluate[Hold[Module[{y}, y /. FindRoot[e1, {y, 1}]]] /.

>          e1 -> e]]

same as above

> 

> ClearAll[f];

> f[x_] := Evaluate[

>   ReleaseHold[Hold[Module[{y}, y /. FindRoot[e1, {y, 1}]]] /.

>          e1 -> e]]

here you force FindRoot to be evaluated

> 




  • Prev by Date: Re: Wavelet "filter"?
  • Next by Date: Re: problem with MLGetReal64Array
  • Previous by thread: Re: Putting an expression into a module
  • Next by thread: Re: Putting an expression into a module