;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*- ;;; Patch file for System version 124.82 ;;; Reason: ;;; Yet another implementation of `#(...) ;;; Written 21-Jun-88 12:15:43 by pld (Peter L. DeWolf) at site Gigamos Cambridge ;;; while running on Cthulhu from band 1 ;;; with Experimental System 124.79, Experimental Local-File 74.2, Experimental File-Server 23.1, Experimental Unix-Interface 12.0, Experimental ZMail 72.1, Experimental Tape 23.6, Experimental Lambda-Diag 16.2, microcode 1760, SDU Boot Tape 3.14, SDU ROM 8, the old ones. ; From modified file DJ: L.IO; READ.LISP#464 at 21-Jun-88 12:26:29 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: IO; READ  " (defmacro XR-BQ-VECTOR* (ELEMENT) `(if (consp ,element) (apply #'vector ,element) (vector ,element))) )) ; From modified file DJ: L.IO; READ.LISP#464 at 21-Jun-88 12:26:36 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: IO; READ  " (DEFUN XR-BACKQUOTE-MACRO (STREAM IGNORE) (LET* ((**BACKQUOTE-REPEAT-VARIABLE-LISTS** (CONS T **BACKQUOTE-REPEAT-VARIABLE-LISTS**)) (object (INTERNAL-READ STREAM T NIL T)) (vector-p (simple-vector-p object))) (MULTIPLE-VALUE-BIND (FLAG THING) (BACKQUOTIFY (if vector-p (listarray object) object)) (COND ((EQ FLAG **BACKQUOTE-/,/@-FLAG**) (READ-ERROR "/",@/" right after a /"`/": `,@~S." THING)) ((EQ FLAG **BACKQUOTE-/,/.-FLAG**) (READ-ERROR "/",./" right after a /"`/": `,.~S." THING)) (vector-p `(xr-bq-vector* ,(backquotify-1 flag thing))) (T (BACKQUOTIFY-1 FLAG THING)))))) )) ; From modified file DJ: L.IO; READ.LISP#464 at 21-Jun-88 12:28:06 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: IO; READ  " (DEFUN BACKQUOTIFY (CODE) (PROG (AFLAG A DFLAG D) (COND ((ATOM CODE) (COND ((NULL CODE) (RETURN (VALUES NIL NIL))) ((OR (NUMBERP CODE) (EQ CODE T)) (RETURN (VALUES T CODE))) (T (RETURN (VALUES 'QUOTE CODE))))) ((EQ (CAR CODE) **BACKQUOTE-/,-FLAG**) (SETQ CODE (CDR CODE)) (GO COMMA)) ((EQ (CAR CODE) **BACKQUOTE-/,/@-FLAG**) (RETURN (VALUES **BACKQUOTE-/,/@-FLAG** (CDR CODE)))) ((EQ (CAR CODE) **BACKQUOTE-/,/.-FLAG**) (RETURN (VALUES **BACKQUOTE-/,/.-FLAG** (CDR CODE))))) (MULTIPLE-VALUE-SETQ (AFLAG A) (BACKQUOTIFY (CAR CODE))) (MULTIPLE-VALUE-SETQ (DFLAG D) (BACKQUOTIFY (CDR CODE))) (AND (EQ DFLAG **BACKQUOTE-/,/@-FLAG**) (READ-ERROR " /",@/" after a /"./": .,@~S in ~S." D CODE)) (AND (EQ DFLAG **BACKQUOTE-/,/.-FLAG**) (READ-ERROR " /",./" after a /"./": .,.~S in ~S." D CODE)) (COND ((EQ AFLAG **BACKQUOTE-/,/@-FLAG**) (COND ((NULL DFLAG) (SETQ CODE A) (GO COMMA))) (RETURN (VALUES 'APPEND (IF (EQ DFLAG 'APPEND) (CONS-IN-AREA A D READ-AREA) (LIST-IN-AREA READ-AREA A (BACKQUOTIFY-1 DFLAG D)))))) ((EQ AFLAG **BACKQUOTE-/,/.-FLAG**) (WHEN (NULL DFLAG) (SETQ CODE A) (GO COMMA)) (RETURN (VALUES 'NCONC (IF (EQ DFLAG 'NCONC) (CONS-IN-AREA A D READ-AREA) (LIST-IN-AREA READ-AREA A (BACKQUOTIFY-1 DFLAG D)))))) ((NULL DFLAG) (IF (MEMQ AFLAG '(QUOTE T NIL)) (RETURN (VALUES 'QUOTE (LIST A))) (RETURN (VALUES 'LIST (LIST-IN-AREA READ-AREA (BACKQUOTIFY-1 AFLAG A)))))) ((MEMQ DFLAG '(QUOTE T)) (IF (MEMQ AFLAG '(QUOTE T NIL)) (RETURN (VALUES 'QUOTE (CONS-IN-AREA A D READ-AREA))) (RETURN (VALUES 'LIST* (LIST-IN-AREA READ-AREA (BACKQUOTIFY-1 AFLAG A) (BACKQUOTIFY-1 DFLAG D))))))) (SETQ A (BACKQUOTIFY-1 AFLAG A)) (IF (MEMQ DFLAG '(LIST LIST*)) (RETURN (VALUES DFLAG (CONS-IN-AREA A D READ-AREA)))) (RETURN (VALUES 'LIST* (LIST-IN-AREA READ-AREA A (BACKQUOTIFY-1 DFLAG D)))) COMMA (COND ((ATOM CODE) (COND ((NULL CODE) (RETURN (VALUES NIL NIL))) ((OR (NUMBERP CODE) (EQ CODE 'T)) (RETURN (VALUES T CODE))) (T (RETURN (VALUES **BACKQUOTE-/,-FLAG** CODE))))) ((EQ (CAR CODE) 'QUOTE) (RETURN (VALUES 'QUOTE (CADR CODE)))) ((MEMQ (CAR CODE) '(APPEND LIST LIST* NCONC)) (RETURN (VALUES (CAR CODE) (CDR CODE)))) ((EQ (CAR CODE) 'CONS) (RETURN (VALUES 'LIST* (CDR CODE)))) (T (RETURN (VALUES **BACKQUOTE-/,-FLAG** CODE)))))) ))