Re: Evaluate part of rhs of RuleDelayed

*To*: mathgroup at smc.vnet.net*Subject*: [mg91090] Re: [mg91081] Evaluate part of rhs of RuleDelayed*From*: Andrzej Kozlowski <akoz at mimuw.edu.pl>*Date*: Wed, 6 Aug 2008 05:03:16 -0400 (EDT)*References*: <200808051028.GAA14053@smc.vnet.net>

Here is a rather obvious although, perhaps, not a very elegant solution: SomeComplexFunction[a_] := Module[{x, SCF}, x = a*a; {value -> SCF[x + a]} /. {Rule -> RuleDelayed, SCF -> SomeComplexFunction}] In[2]:= SomeComplexFunction[5] Out[2]= {value :> SomeComplexFunction(30)} Andrzej Kozlowski On 5 Aug 2008, at 12:28, 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]]} > > -- > Eugene Kirpichov > Web IR developer, Yandex >

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