On Tue, Aug 10, 2010 at 11:48 PM, Sam Steingold sds@gnu.org wrote:
Hi Liam,
On 8/10/10, Liam Healy lhealy@common-lisp.net wrote:
On Tue, Aug 10, 2010 at 1:36 PM, Sam Steingold sds@gnu.org wrote: > (symbol-plist (sys::closure-const (slot-value (nth 20 > (CLOS:GENERIC-FUNCTION-METHODS #'SET-ALL)) 'CLOS::$FAST-FUNCTION) 0)) > NIL > > i.e., the method FUNCALLs the property of the uninterned symbol which is NIL.
If I make a small modification to GSLL (attached) so that function names like #:|gsl_vector_complex_float_set_all| are instead interned, e.g. '|gsl_vector_complex_float_set_all|, then I get all tests to pass in my (old) version of CLISP: (lisp-unit:run-tests vector-set-all) VECTOR-SET-ALL: 12 assertions passed, 0 failed.
Now it seems to me that what FSBV is doing with symbols (set/get properties) should work equally well on uninterned or interned symbols, so the original should work fine. Is that correct? Why does CLISP lose the property list binding when the symbol is uninterned?
because it is not the same symbol. :-( this is a very old bug: https://sourceforge.net/tracker/?func=detail&aid=836838&group_id=135... the workaround is to use `let' or `locally' instead of `progn',
Wow, "very old", you're not kidding; it was old already in 2003. I guess that one has tenure now, so I've changed the definition in GSLL to use let.
I can't get the new CLISP to build as it doesn't see libsigsegv and libreadline are there no matter what I try. So on my old Debian stable CLISP 2.44.1, I can run the individual tests vector-set-all and matrix-set-all, but I can't run the comprehensive test suite as it crashes out of CLISP a few tests in.
Liam