Bill Allombert on Sat, 11 Oct 2014 16:42:08 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: Question about apply |
On Fri, Oct 10, 2014 at 06:34:38PM +0200, Josef Eschgfaeller wrote: > I cannot understand the following behavior: > -------------------------------------------------- > v=[1,2,3,4] > > a=[]; b=[]; > apply (x->a=concat(a,[x]),v); > print(a) > > \\ [1, 2, 3, 4] > > \\ Same within a function: > f (v) = {my (a,b); > a=[]; b=[]; > apply (x->a=concat(a,[x]),v); > print(a)} > > f(v) > \\ [] > -------------------------------------------------- In the second example, the variable 'a' is statically scoped in in the function 'f'. Thus changes to 'a' inside another function (x->a=concat(a,[x]) in the example) are not visible by f. If you like your example to work, you need to use local() instead of my(). Cheers, Bill.