MathGroup Archive 2011

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

Search the Archive

Re: How to evaluate parts of an expression, but not other parts?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg122693] Re: How to evaluate parts of an expression, but not other parts?
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Sun, 6 Nov 2011 05:56:06 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <201111050945.EAA10308@smc.vnet.net>

On 5 Nov 2011, at 10:45, Julian Francis wrote:

> Dear all,
>
> I'd like to use the TreePlot function to visualise the expression of a
> dynamic programming problem I am working on.
>
> If I have something like: ( (a+b) + (c+d )
>
> Mathematica helpfully simplifies this to: a + b + c + d
>
> But I'd prefer it to be in the original form.
>
> I can't write Hold[ ( (a+b) + (c+d) )] because I do want a,b,c & d to
> be evaluated.
>
> I want to write something like:
> Hold[ ( (Evaluate[a]+Evaluate[b]) + (Evaluate[c]+Evaluate[d]) ) ]
>
> But this just leaves the Evaluate expressions unevaluated.
>
> Any help greatly appreciated.
>
> Thanks,
> Julian.
>


Well, there may be a simpler way, but here is one that comes to my mind:

a = x; b = y; c = z; d = w;

HoldForm @@ Apply[Hold, Hold[(a + b) + (c + d)], {2}] /. p_Hold :> With[{w = Plus @@ p}, w /; True]

HoldForm[(x + y) + (w + z)]

Andrzej Kozlowski=



  • Prev by Date: Format and MakeBoxes in depth - Part 1
  • Next by Date: Re: Import files on accessible URL and save in local machine.
  • Previous by thread: How to evaluate parts of an expression, but not other parts?
  • Next by thread: Re: How to evaluate parts of an expression, but not other parts?