| Bill Allombert on Wed, 20 Jun 2012 08:59:37 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: gp_read_str |
On Wed, Jun 20, 2012 at 06:27:24AM +0200, Dirk Laurie wrote:
> 2012/6/15 Bill Allombert <Bill.Allombert@math.u-bordeaux1.fr>:
>
> > Mayeb there are nicer ways to do that with PARI 2.5.
> > For example you do
> > GEN code = gp_read_str("(a,b,c)->a*(b-c)");
> > and then
> > GEN res = closure_callgenvec(code, mkvec3(a,b,c))
> >
>
> Thanks, that solves my problem completely. Two more questions, though.
>
> 1. Maybe in view of the usefulness of the above suggestion the statement
> below is a little too discouraging, especially since §11.1 documents
> closure_callgenvec and some other functions too.
>
> 4.5.19 Type t_CLOSURE (closure).: This type hold GP functions and closures,
> in compiled form. It is useless in library mode and subject to change
> each time the GP language evolves. Hence we do not describe it here and
> refer to the Developer's Guide.
I agree. There are valid use of t_CLOSURE now (we even provide a way to convert C
functions to t_CLOSURE). The documentation is right that the internal of the t_CLOSURE
type belong to the Developer's Guide, but not the high-level functions which indeed
are described in the section 'Handling closures' of the libpari manual
> 2. Is there a way to find out the arity of the closure before calling
> it?
You can use the following function
long closure_arity(GEN C) { return C[1]; }
which was unfortunately omited in 2.5
> Even better, to have access to the entree of the closure?
t_CLOSURE do not have entree associated to them. (Installed functions do, but
they are not t_CLOSURE).
Cheers,
Bill.