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