Bill Allombert on Sat, 30 Sep 2023 13:27:44 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: bug in simplify_shallow


On Sat, Sep 30, 2023 at 01:10:23PM +0200, Ruud H.G. van Tol wrote:
> 
> On 2023-09-29 23:05, Bill Allombert wrote:
> > On Sun, Aug 27, 2023 at 05:01:07PM +0200, Ruud H.G. van Tol wrote:
> > > On 2023-08-27 16:13, Karim Belabas wrote:
> > > > [...] What Bill and I suggested was to return "a copy of the
> > > > inserted element"
> > > > instead. I don't really see a scenario where this would break
> > > > compatibility ... except this would make insertion about twice slower,
> > > > even in cases where the returned value is ignored.
> > > Yes, so I wondered if the "void calling context" is decidable at
> > > compile-time, such that any new overhead can be avoided where feasible.
> > Indeed there used to be a bug in the compiler that I just fixed
> > that caused it to fail to take the void context into account in
> > some case.
> 
> Thanks for the changes and fixes!
> 
> (also for not making it return the final length of the list ;) )

Well, there still the issue that

? my(L=List());a=listput(L,5)
? a
%2 = 0

because GP convert void to 0...

> P.S. In paridecl.h, comparing listpop:
> 
>  void    listpop(GEN L, long index);
> 
> shouldn't these now also be void?
> 
>  GEN     listinsert(GEN list, GEN object, long index);
>  GEN     listput(GEN list, GEN object, long index);
> 
> (or does GEN cover that already?)

GP uses listinsert0 and listput0 which returns void.
I have kept the return value for the C functions.

Cheers,
Bill.