;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:10; Patch-File:T -*- ;;; Patch file for System version 122.9 ;;; Reason: ;;; ADDED DOSEQUENCE MACRO -GJC ;;; Written 29-Jun-87 09:35:45 by khh at site LMI Cambridge ;;; while running on Lambda Four B from band 2 ;;; with Experimental System 122.8, Experimental Local-File 73.0, Experimental FILE-Server 22.0, Experimental Unix-Interface 11.0, Experimental Tape 17.1, Experimental Tiger 26.0, Experimental KERMIT 33.0, Experimental ZMail 71.0, Experimental Lambda-Diag 15.0, microcode 1742, SDU Boot Tape 3.7, SDU ROM 102, 122.8. (GLOBALIZE "DOSEQUENCE") (IMPORT (INTERN "DOSEQUENCE" "GLOBAL") "LISP") ; From file DJ: L.SYS2; LMMAC.LISP#457 at 29-Jun-87 09:35:46 #10R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS2; LMMAC  " (defmacro dosequence ((var sequence &OPTIONAL RESULTFORM) &BODY BODY) "Iterate BODY with VAR bound to successive ELT's of SEQUENCE" ;; not common lisp, but useful like NIL's DOVECTOR (LET ((ITERATION-VAR (GENTEMP "VAR")) (LENGTH-VAR (GENTEMP "LENGTH")) (SEQUENCE-VAR (GENTEMP "SEQUENCE"))) `(LET ((,SEQUENCE-VAR ,SEQUENCE)) (DO ((,ITERATION-VAR 0 (1+ ,ITERATION-VAR)) (,LENGTH-VAR (LENGTH ,SEQUENCE-VAR)) (,VAR)) ((= ,ITERATION-VAR ,LENGTH-VAR) ,RESULTFORM) (SETQ ,VAR (ELT ,SEQUENCE-VAR ,ITERATION-VAR)) ,@BODY)))) ))