Added thought: you can lookup any GSL (C) function to find the CL
equivalent by using gsl-lookup. So for example
(gsl:gsl-lookup "gsl_permute_vector")
PERMUTE
T
tells you #'permute is the function you want. If there is no
equivalent (there are some C functions with no interface in CL), you
will get NIL as the return value of this function.
Liam
On Wed, Nov 25, 2015 at 11:20 PM, Mirko Vukovic <mirko.vukovic@gmail.com> wrote:
> Thanks for the explanations - I missed the :generic and :method specifiers.
> I'll study the macro-expansions.
>
> Sorry for the noise.
>
> Mirko
>
> On Tue, Nov 24, 2015 at 10:16 PM, Liam Healy <lhealy@common-lisp.net> wrote:
>>
>> The original code looks right to me.
>>
>> You have taken the generic function and the associated foreign vector
>> methods #'permute and gratuitously renamed them #'permute-vector,
>> leaving the method for raw C pointer with the original name and no
>> generic function. Then you completely delete the generic function and
>> vector methods for #'permute-inverse for no apparent reason, leaving a
>> method for the raw C pointer only.
>>
>> There is no duplicated code here. There is certainly the equivalent of
>> gsl_permute_vector, it is the GRID:VECTOR-DOUBLE-FLOAT (second arg)
>> method of #'permute (which you renamed).
>>
>> I recommend macroexpansion as a way of seeing what's being defined. If
>> you use emacs, place the cursor on the defmfun line and do C-c C-m.
>> Then you will see all the generic functions and methods, and you will
>> see there is no error in the original code.
>>
>> On Tue, Nov 24, 2015 at 5:43 PM, Mirko Vukovic <mirko.vukovic@gmail.com>
>> wrote:
>> > Because of a typo, GSLL did not have the equivalent of
>> > GSL_PERMUTE_VECTOR.
>> >
>> > There was also a section of duplicated code.
>> >
>> > This patch should fix these errors.
>> >
>> > NOTE: I did not test this patch - My GSLL system is not behaving
>> > super-cleanly on MSYS2 and GSL2.1. Proceed with care.
>> >
>> > Mirko
>
>