Karim Belabas on Fri, 22 Jun 2012 17:13:12 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: Assigning closure names |
* Dirk Laurie [2012-06-22 16:54]: > Consider the following GP session. > > ? type(Ser) > %1 = "t_CLOSURE" > ? type(Vec) > %2 = "t_VEC" > > Deduction: when a built-in function may be called > with an empty parameter list, the bare name is > interpreted as a function call, not as a reference > to the closure. Originally an old misguided design decision of mine: I had decided to allow 'f' as a shortcut for 'f()'. In the old interpretor -- before Bill's rewrite --, this had the small advantage of allowing 'Pi' as a shortcut for 'Pi()'. Note that your specific example only works in pari-stable. In pari-2.6.*, Vec() has a mandatory argument. > Is there a way to access the closure "Vec" as a Pari object? I do not see any simple way, maybe Bill will have a clever idea. Here's a close variant (17:06) gp > f = x->Vec(x); (17:06) gp > type(f) %2 = "t_CLOSURE" (17:06) gp > f(x + 2) %3 = [1, 2] There's a minor difference, though: f has a mandatory argument, contrary to (pari-stable-)Vec. This also works without arguments: (17:09) gp > f = ()->Pi %4 = ()->Pi (17:11) gp > f() %5 = 3.1415926535897932384626433832795028842 Cheers, K.B. -- Karim Belabas, IMB (UMR 5251) Tel: (+33) (0)5 40 00 26 17 Universite Bordeaux 1 Fax: (+33) (0)5 40 00 69 50 351, cours de la Liberation http://www.math.u-bordeaux1.fr/~belabas/ F-33405 Talence (France) http://pari.math.u-bordeaux1.fr/ [PARI/GP] `