Hello,<br><br>(I apologize for the wide email distribution.  There is a
small probability the issue described here is due to a mismatch between
iterate or sbcl).<br><br>The package <a href="http://repo.or.cz/w/gsd.git" target="_blank">gsd</a>, part of <a href="http://common-lisp.net/project/gsll/" target="_blank">gsll</a>
uses iterate to loop over elements of vectors and matrices.  I have
attached the part of the package that extends iterate to this email.<br>
<br>I am having the following issue on sbcl1.034 on RHEL5 64-bit linux, via slime.<br><br>The following form evaluates OK at the REPL.<br> (iter:iter<br>
   (iter:for c :matrix-row grid::*array-3-4-double-float*<div>)<br>
   (print c))<br><br>But, if I embed it into a function:<br>(defun foo ()<br>  (iter:iter<br>   (iter:for c :matrix-row grid::*array-3-4-double-float*)<br>   (print c)))<br><br>it will evaluate OK in slime (C-x C-e), but will not compile (C-c C-c).  The returned error is:<br>


>>><br><br>post-processing/xpdp-post-processing.lisp:75:3:<br>  error: <br>    Objects of type FUNCTION can't be dumped into fasl files.<br>    --> LET* BLOCK TAGBODY PROGN SETQ THE FUNCALL SB-C::%FUNCALL THE <br>


    --> SB-KERNEL:%COERCE-CALLABLE-TO-FUN <br>    ==><br>      #<FUNCTION (LAMBDA #) {1002DD7AD9}><br>    <br>  note: <br>    The first argument never returns a value.<br>    --> LET* BLOCK TAGBODY PROGN SETQ THE FUNCALL SB-C::%FUNCALL THE <br>


    ==><br>      (SB-KERNEL:%COERCE-CALLABLE-TO-FUN #<FUNCTION # {1002DD7AD9}>)<br><br>... more stuff<br>>>><br><br>So, it seems that sbcl can digest it, but for some reason cannot write it to a fasl.<br>


<br>The macroexpansion of the code above is:<br>(LET* ((#:SEQUENCE120 NIL) (#:LIMIT121 NIL) (C NIL) (#:INDEX119 NIL))<br>  (BLOCK NIL<br>    (TAGBODY<br>       (PROGN<br>     (SETQ #:SEQUENCE120 GRID::*ARRAY-3-4-DOUBLE-FLOAT*)<br>


     (SETQ #:LIMIT121 (FUNCALL # #:SEQUENCE120))<br>     (SETQ #:INDEX119 -1))<br>     LOOP-TOP-NIL<br>       (PROGN<br>     (SETQ #:INDEX119 (+ #:INDEX119 1))<br>     (IF (>= #:INDEX119 #:LIMIT121)<br>         (GO LOOP-END-NIL))<br>


     (SETQ C (FUNCALL # #:SEQUENCE120 #:INDEX119))<br>     (PRINT C))<br>       (PROGN)<br>       (GO LOOP-TOP-NIL)<br>     LOOP-END-NIL<br>       (PROGN))<br>    NIL))<br><br>Is this issue due to a malformed extension of iterate, or some misalignment between iterate and sbcl?<br>


<br>Thank you,<br><font color="#888888"><br>Mirko</font></div>