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>
- Evaluate part of rhs of RuleDelayed