| Charles Greathouse on Wed, 25 Jul 2012 15:13:01 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: install name collision |
> You must make sure all install() and alias() commands are executed before any
> GP functions using the new symbols are defined.
Good to know. But isn't that what I'm doing? gp2c-run runs the install
commands before loading the .gprc file, doesn't it?
Charles Greathouse
Analyst/Programmer
Case Western Reserve University
On Wed, Jul 25, 2012 at 6:41 AM, Bill Allombert
<Bill.Allombert@math.u-bordeaux1.fr> wrote:
> On Tue, Jul 24, 2012 at 10:58:14PM -0400, Charles Greathouse wrote:
>> I wrote a .gp.c file which includes, among other things, a function
>> called vecsum. It was based on a gp2c conversion, and includes
>>
>> GP;install("vecsum","G","vecsum","./auto.gp.so");
>>
>> in a comment so that gp2c-run will load it. (Yes, this is a silly
>> function, but I mention it up only for the bug report.)
>>
>> Usually this procedure works fine, and indeed it seems to here:
>>
>>
>> *** at top-level: rec([23124110,141322
>> *** ^--------------------
>> *** in function findrecd: ...max(c)==1&&vecmin(c)==0&&vecsum(c)==1)||c==[1
>> *** ^--------------------
>> *** variable name expected.
>> *** Break loop: type 'break' to go back to GP
>
> You must make sure all install() and alias() commands are executed before any
> GP functions using the new symbols are defined. Otherwise the GP compiler use
> the old value of the symbol instead of the new one.
>
> ? f(a)=addii(a,123);
> ? install(addii,GG)
> ? f(5)
> *** at top-level: f(5)
> *** ^----
> *** in function f: addii(a,123)
> *** ^------------
> *** variable name expected.
>
> ...
>
> ? install(addii,GG)
> ? f(a)=addii(a,123);
> ? f(5)
> %2 = 128
>
> (by contrast, GP function are dynamic: you can define them after they are used
> in other functions, but this incurs some penalties).
>
> Cheers,
> Bill.
>