Re: How to Explain This Behavior of Simple Procedures?
- To: mathgroup at smc.vnet.net
- Subject: [mg109634] Re: How to Explain This Behavior of Simple Procedures?
- From: schochet123 <schochet123 at gmail.com>
- Date: Sun, 9 May 2010 07:49:59 -0400 (EDT)
- References: <hs3gjn$ru6$1@smc.vnet.net>
Set ( = ) does not evaluate its first argument (the lhs) by default,
so you need to use Evaluate to tell it to do so. Just replace
lhs[[1]] = rhs by Evaluate[lhs[[1]]]=rhs
Steve
On May 8, 2:06 pm, James Stein <mathgr... at stein.org> wrote:
>
> But this method, where f receives the variable differently, fails:
>
> *Input:*
>
> ClearAll [f, g];
> f [lhs_List, rhs_] := lhs[[1]] = rhs;
> g[rhs_] := Module[{localVar},
> f [{localVar}, rhs];
> Print["g: localVar=", localVar];
> ];
> g[44];
>
> *(printed) Output:*
>
> g: localVar=localVar$313085
>
> In addition, there is an error message:
>
> Set::setps :
>
> (localVar$313085} in the part assignment is not a symbol.
>
> which is curious because:
>
> Head[localVar$313085] returns Symbol.