Re: Evaluate part of rhs of RuleDelayed

*To*: mathgroup at smc.vnet.net*Subject*: [mg91086] Re: [mg91081] Evaluate part of rhs of RuleDelayed*From*: Carl Woll <carlw at wolfram.com>*Date*: Wed, 6 Aug 2008 05:02:30 -0400 (EDT)*References*: <200808051028.GAA14053@smc.vnet.net>

Eugene Kirpichov wrote: >I am writing a lazy recursive function (actually, a tree of UI widgets >that is too large to be constructed at once). >Consider, for example, the following code: > >SomeComplexFunction[a_] := Module[{x}, > x = a*a; > {value :> SomeComplexFunction[x + a]}] > >The value of SomeComplexFunction[5] is {value :> >SomeComplexFunction[x$7418 + 5]} and seemingly can'd be used for >anything useful. > >Question: >How should I fix the code of SomeComplexFunction so that the value of >SomeComplexFunction[5] be {value :> SomeComplexFunction[30]} ? > >Unfortunately, this one > >SomeComplexFunction[a_] := Module[{x}, > x = a*a; > {value :> SomeComplexFunction[Evaluate[x + a]]}] > >yields {value :> SomeComplexFunction[Evaluate[x$7421 + 5]]} > > > You can try either of the following: SomeComplexFunction[a_] := With[{x = a*a}, {value :> SomeComplexFunction[x + a]}] SomeComplexFunction2[a_] := {value :> SomeComplexFunction2[# + a]} &[a a] Carl Woll Wolfram Research

**References**:**Evaluate part of rhs of RuleDelayed***From:*"Eugene Kirpichov" <ekirpichov@gmail.com>