|Bill Allombert on Thu, 07 Mar 2013 20:51:31 +0100|
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
|Re: PARI 2.6 syntax 1: iferr/iferrname|
On Fri, Feb 15, 2013 at 10:22:08PM +0100, Bill Allombert wrote: > On Fri, Feb 15, 2013 at 06:32:47PM +0100, Karim Belabas wrote: > > * Bill Allombert [2013-02-14 22:42]: > > [...] > > > > I am not sure that two separate functions iferr / iferrname are useful. > > We could have a single iferr() -- corresponding to current iferrname -- > > with the following syntax: > > A possibility is to discriminate on the number of arguments, like 'if' do. While discussing with Karim, we decided to remove iferrname and allows: iferr(seq1,E,seq2) \\ unchanged iferr(seq1,E,seq2,pred) \\ only trap the error if pred is true iferr(seq1) \\ = iferr(seq1,E,E) An implementation of the 2 first synatx is available in the branch bill-iferr. Unfortunately the third syntax is problematic, because iferr cannot differentiate between iferr(seq1) iferr(seq1,E) and iferr(seq1,E,), and certainly iferr(seq1,E,) should return gnil, not E in case of error. Maybe we need to add explicit catch()/throw() functions instead. We considered swapping seq2 and pred: iferr(seq1,E,pred,seq2) this is a bit more logical, but it is not in the spirit of GP to change meaning of arguments based on the number of them. Cheers, Bill.