Ilya Zakharevich on Thu, 30 May 2024 01:14:13 +0200


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

Re: Using builtin PARI operators in gp


On Sun, May 12, 2024 at 09:56:46AM +0200, Karim Belabas wrote:
> * Ilya Zakharevich [2024-05-12 05:06]:
> > Up to some extent, one can “reach” the builtin PARI operators in gp:

> There is one already:
> 
>   ? alias(plus, "_+_")
>   ? fold(plus, [1,2,3])

Oups, I did not even realize that fold() is already implemented!  😆

I do not know: should not
      fold("_+_", [1,2,3])
“just work”?  (Likewise for other uses of anonymous functions?)

>   %2 = 6
> 
> It's even (sort of) documented:

Hmm:

       Alias expansion is performed directly by the internal GP
       compiler.   Note that since alias is performed at
       compilation-time,  it …

I think this is not very comprehensible.  Probably, it means something
like:

       When the internal compiler of PARI compiles an anonymous
       subroutine (or other code) and encounters a use of “an aliased
       symbol”, an alias expansion happens immediately.  Hence there
       is no run time penalty.

Additionally, I have no clue what alias() is actually doing.  For
example, is
  alias(SIN, sin)
a “glorified version” of SIN = sin, or of SIN = builtin::sin?  What
about
  alias(SIN, "sin")
?  Or: is
  Sin = sin; alias(SIN, Sin)
(ALWAYS) the same as alias(SIN, sin) ?

Thanks,
Ilya