Assuming variable x is a long list, which needs 1GB memory to store.
I want to modify x in a function, such as let x[[10]]=1, using
f[a_,i_]:=Block[{b},b=a;b[[i]]=1;b]
x=f[x,10]
but when I call the funtion f, it will take extra 1GB memory. How can I in-situ modify x in function f without extra memory?
SetAttributes[foo, HoldFirst]; foo[a_, i_]:=a[[i]] = 1
? $\endgroup$