Re: calling by reference
"Ruud H.G. van Tol" <[email protected]>
| Newsgroups | gmane.comp.mathematics.pari.user |
|---|---|
| Message-ID | <[email protected]> |
On 2025-03-11 15:46, Bill Allombert wrote: > On Tue, Mar 11, 2025 at 03:27:28PM +0100, Ruud H.G. van Tol wrote: >> The user manual states: >> >> 2.7.2 [...] If an argument is prefixed by a tilde ~ in the function >> declaration and the call, it is passed by reference. (If either the >> declaration or the call is missing a tilde, we revert to a call by value.) > Actually it depends if the variable is lexically or dynamically scoped. > Please do not forget the ~! But with a dynamically scoped L: ? L=List([1,2,3]); print(L); listinsert(L,42,1); print(L); listpop(L,2); print(L); List([1, 2, 3]) List([42, 1, 2, 3]) List([42, 2, 3]) the missing ~ appears to work fine. I normally avoid using non-lexically scoped variables, and I generally code with the ~, so I was never bitten by this, but then I got asked why I was doing that. :) (so I did some tests and got surprised) -- Ruud