| Bill Allombert on Tue, 11 Mar 2025 16:28:00 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: calling by reference |
On Tue, Mar 11, 2025 at 04:00:13PM +0100, Ruud H.G. van Tol wrote: > 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. The reason is that listinsert and listpop are C functions, which are prototyped. But please really do not omit the ~, at some point PARI will require it. Cheers, Bill.