;;; -*- Mode:Lisp; Readtable:T; Package:USER; Base:8; Patch-File:T -*-
;;; Patch file for System version 121.11
;;; Reason:
;;;  Make ALTERNATE-MACRO-DEFINITION for MULTIPLE-VALUE-SETQ
;;; Written 23-Jan-87 15:02:07 by jrm (Joe Marshall) at site LMI Cambridge
;;; while running on Laurie Anderson from band 2
;;; with Experimental System 121.10, Experimental Lambda-Diag 15.0, Experimental ZMail 70.1, Experimental KERMIT 32.0, Experimental Unix-Interface 10.0, Experimental Local-File 72.0, Experimental FILE-Server 21.0, Experimental Tape 13.0, Experimental IMicro 19.0, microcode 1729, SDU Boot Tape 3.14, SDU ROM 102.



; From modified file DJ: L.SYS2; CLMAC.LISP#9 at 23-Jan-87 15:02:11
#8R SYSTEM-INTERNALS#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: SYS2; CLMAC  "

(defmacro (multiple-value-setq alternate-macro-definition) (vars form)
  (labels ((pair-up (vars bindings setqs)
	     (if (null vars)
		 `(MULTIPLE-VALUE-CALL
		   #'(LAMBDA ,(cons '&OPTIONAL (reverse bindings))
		       ,@(reverse setqs) ,(first (reverse bindings)))
		   ,form)
	         (let ((temp (gensym)))
		   (pair-up (rest vars)
			    (cons temp bindings)
			    (cons `(SETQ ,(first vars) ,temp) setqs))))))
    (pair-up vars nil nil)))

))
