Apologies for cross posting, but I am not sure where this problem belongs (iterage or gsll). I use slime (updated a few days ago) on sbcl 1.031 on linux. I have problems compiling the following file:<br><br>>>><br>
(in-package :grid)<br><br>(defun foo ()<br> (iter:iter (iter:for e :Matrix-row grid::*array-3-4-double-float*)<br> (princ e) (princ " ")))<br><<<<br>(the code is from the iterate.lisp file of the distribution)<br>
<br>Now in slime, I have problems. Evaluation works:<br><br>I can do C-x C-e to compile `foo'<br>I can also do C-M-x<br><br>But compilation does not. Both C-c C-c and C-c C-k will flag a compiler error: <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 # {10030285A9}>)<br><br>
Same story in raw sbcl.<br><br>I looked at the iterate.lisp source code and see nothing obvious. But, I am not sure what to make of the following: If I macro-expand the above code (iter:iter ... (iter:for ... :matrix-row ...(...))) I get the following expansion. The puzzling thing is thta the first argument to `funcall' is a single hash character `#':<br>
<br>(let* ((#:sequence208 nil) (#:limit209 nil) (e nil) (#:index207 nil))<br> (block nil<br> (tagbody<br> (progn<br> (setq #:sequence208 *array-3-4-double-float*)<br> (setq #:limit209 (funcall # #:sequence208)) ;; <-----<br>
(setq #:index207 -1))<br> loop-top-nil<br> (progn<br> (setq #:index207 (+ #:index207 1))<br> (if (>= #:index207 #:limit209)<br> (go loop-end-nil))<br> (setq e (funcall # #:sequence208 #:index207)) ;; <-----<br>
(princ e)<br> (princ " "))<br> (progn)<br> (go loop-top-nil)<br> loop-end-nil<br> (progn))<br> nil))<br><br>Instead of the single hash mark, I would have expected the :access-fn and :size-fn `lambda's from the (defclause-sequence matrix-row matrix-row-index ...) in iterate.lisp.<br>
<br>So, lots of puzzles. Not sure where this bug belongs: iterate or grid?<br><br>Thanks,<br><br>Mirko<br>