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',