MathGroup Archive 2011

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

Search the Archive

Re: Visibility of value of variable bindings in module

  • To: mathgroup at smc.vnet.net
  • Subject: [mg121234] Re: Visibility of value of variable bindings in module
  • From: "Oleksandr Rasputinov" <oleksandr_rasputinov at hmamail.com>
  • Date: Mon, 5 Sep 2011 07:07:25 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <j40spg$l13$1@smc.vnet.net>

On Sun, 04 Sep 2011 23:06:40 +0100, caw <cawright.99 at gmail.com> wrote:

> Hi
>
> Module[{x = Sum[i, {i, Length[{1, 2, 3}]}], y = x + 1}, Print[y];
> Print[x]]
>
> prints out:
>
> 1 + x
> 6
>
> So, in the variable declaration section of the Module statement, the
> binding of x to 6 isn't visible to y.
> (It's a bit like let and let*, but not)
>
> Is there a form which will allow the bindings to be visible within the
> variable declaration section?
>
> thanks very much
>
> chris
>

No, there is not. Instead you must do:

Module[{x, y},
  x = Sum[i, {i, Length[{1, 2, 3}]}];
  y = x + 1;
  Print[y];
  Print[x]
]

or something logically equivalent. If you require these semantics  
frequently, you could easily write a function that takes a Module as an  
(unevaluated) argument and rewrites it into the required form before  
evaluating it.




  • Prev by Date: Re: Assembling PDFs into a PDF document?
  • Next by Date: Re: Addon packet errors
  • Previous by thread: Re: Visibility of value of variable bindings in module
  • Next by thread: JLink connection at Mathematica 8 start on OS X 10.6