Using Intermediate Variables in DynamicModules

*To*: mathgroup at smc.vnet.net*Subject*: [mg80265] Using Intermediate Variables in DynamicModules*From*: "David Park" <djmpark at comcast.net>*Date*: Thu, 16 Aug 2007 04:44:02 -0400 (EDT)

I am having a lot of trouble with a DynamicModule expression. I believe that the following examples get to the heart of the matter. Here is a DynamicModule that uses an external function f. It has two internal variables a and b, which are controlled by sliders. The third output line gives a+b and f[a+b]. f[x_] := x^2 DynamicModule[ {a = 0.5, b = 0.5}, Column[{Slider[Dynamic[a], {0, 2}], Slider[Dynamic[b], {0, 2}], {Dynamic[a + b], Dynamic[f[a + b]]}}]] Notice that f[a+b] is fully evaluated in the output. Now in my actual case I have a long and complicated expression involving a and b that is used in a number of different places. So to clarify the entire expression I would like to define an intermediate expression that can then be used in the dynamic output. Here is my attempt: f[x_] := x^2 DynamicModule[ {a = 0.5, b = 0.5, work}, work = Dynamic[a + b]; Column[{Slider[Dynamic[a], {0, 2}], Slider[Dynamic[b], {0, 2}], {work, f[work]}}]] Now, although the output is formally correct, the output, and in particular f[work], is not fully evaluated. I think that may be the cause of my problem. Why, in the first case does the f expression become fully evaluated but not in the second case? Is there a simple way to force kernel evaluation when intermediate expressions are used? (I.ve tried many combinations of using Dynamic in the output expression and none of them changed the behavior.) Thanks in advanced. I've always gotten great help from this group. -- David Park djmpark at comcast.net http://home.comcast.net/~djmpark/