Re: Variables within With statement
- To: mathgroup at smc.vnet.net
- Subject: [mg123700] Re: Variables within With statement
- From: Tomas Garza <tgarza10 at msn.com>
- Date: Fri, 16 Dec 2011 05:44:36 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201112150951.EAA22803@smc.vnet.net>
There is no way to obtain what you want. The definition of With specifies that in expr occurrences of the symbols x, y, ... should be replaced by Subscript[x, 0], Subscript[y, 0], .... and makes no reference to the order in which they are written. That is to say, the replacement is simultaneous. Try writing the variables in reverse order:
In[1]:= With[{x = a, b = a + 5}, a + b]
Out[1]= 5 + 2 a
In[3]:= With[{b = a + 5, x = a}, a + b]
Out[3]= 5 + 2 a
In both cases their FullForm gives
Plus[5,Times[2,a]]
-Tomas
> Date: Thu, 15 Dec 2011 04:51:48 -0500
> From: hpd1 at nyu.edu
> Subject: Variables within With statement
> To: mathgroup at smc.vnet.net
>
> Is there any easy way to have one variable within a With
> statement take its value from a prior variable in the same With
> statement? For example, if I evaluate With[{a = 5, b = 10 a}, a + b], I
> get 5 + 10a, and what I want is 55. I can get there like this: With[{a
> = 5}, With[{b = 10 a}, a + b]] -- which does produce 55 -- but it would
> be nicer if I could use a single With statement and get b, within it, to
> take its value from a.
>
> Thanks.
>
> Harvey
>
- References:
- Variables within With statement
- From: "Harvey P. Dale" <hpd1@nyu.edu>
- Variables within With statement