On Mon, Feb 8, 2010 at 9:57 PM, Kalyanov Dmitry <kalyanov.dmitry@gmail.com>wrote:
The iterate extension is clearly wrongly written. You cannot insert non- externalisable value into the compiled file, in this case, functions compiled in compilation-environment. The code should be rewritten to use defuns to declare functions and to use symbols in defclause-sequence.
Dmitry, Yesterday was the first time I encountered this externalisation issue (see emails by Yong). So, I am still wobbly with these concepts. Are you implying that instead of lambda forms one should define the functions and use function names. For example, in the following form (defclause-sequence matrix-row matrix-row-index :access-fn (lambda (marray index) (check-type marray gsl:matrix) (gsll:row marray index)) :size-fn (lambda (marray) (check-type marray gsl:matrix) (c-array:dim0 marray)) :element-type t :sequence-type t :element-doc-string "(copied) rows of a matrix" :index-doc-string "index of the rows in a matrix") all lambda expressions need to be replaced by function symbols. Correct? FWIW, I could not reproduce my problem on clisp. Mirko