Lisp HUG Maillist Archive

Iterate error in LW?

I've run across a strange bug in iterate, LW 4.3, Mac OS X.

Compiling this form:

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

or

(defun test-iter (a b)
   (iter (repeat 4)
     (setf (values a b) (foo))))

produces an error from iterate, saying:

-----
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.
-----

A patch to iter produced this in its error output:

-------
(MULTIPLE-VALUE-BIND-CALL
  #'(LAMBDA (&OPTIONAL G3385 G3386 &REST EXTRA-VALS3387)
      (DECLARE (IGNORE EXTRA-VALS3387) (WEAK-LAMBDA-NAME DUMMY-LAMBDA))
      (LET* () (VALUES (SETQ A G3385) (SETQ B G3386))))
  (FOO))
-------

The macro expansion of the iter in the original form has 
MULTIPLE-VALUE-CALL instead of MULTIPLE-VALUE-BIND-CALL:

(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))

and DESCRIBE shows MULTIPLE-VALUE-BIND-CALL to be completely undefined 
and unbound.

Any idea what this is?

Thanks.

  - Stoney


Updated at: 2020-12-10 08:54 UTC