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