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