[iterate-devel] Iterate error with multiple-value-setq

Stonewall Ballard stoney at sb.org
Fri Nov 19 21:06:22 UTC 2004


(I originally sent this to Andreas Fuchs. No reply, then I found this 
address.)

In Lispworks 4.3 on Mac OS X, Iterate 1.0.9, I get a warning:

Unknown special form MULTIPLE-VALUE-BIND-CALL. The lisp environment 
claims that MULTIPLE-VALUE-BIND-CALL is a special operator, but ITERATE 
doesn't know how to handle it.

when I put a multiple-value-setq inside an iterate like this:

(defun test-iter (a b)
   (iter (repeat 4)
     (multiple-value-setq (a b) (foo))))

The loop expands to:

(LET* ((#:COUNT181 NIL))
   (BLOCK NIL
     (TAGBODY (SETQ #:COUNT181 4)
      LOOP-TOP-NIL (IF (<= #:COUNT181 0) (GO LOOP-END-NIL))
              (VALUES (LET* ()
                        (MULTIPLE-VALUE-CALL #'(LAMBDA (&OPTIONAL 
#:G1829 #:G1830 &REST #:|m-v-b-&rest1831|)
                                                 (DECLARE (IGNORE 
#:|m-v-b-&rest1831|))
                                                 (LET* () (VALUES (SETQ 
A #:G1829) (SETQ B #:G1830))))
                                             (FOO))))
              (SETQ #:COUNT181 (1- #:COUNT181))
              (GO LOOP-TOP-NIL)
      LOOP-END-NIL)
     NIL))

  - Stoney

-- 
Stonewall Ballard
stoney at sb.org           http://stoney.sb.org/





More information about the iterate-devel mailing list