(FILECREATED "16-Jul-85 17:29:28" {ERIS}<LISPCORE>LIBRARY>CMLARITH.;1 8148 changes to: (VARS CMLARITHCOMS) (RECORDS RATIO) (FNS PLUSP = /= < > <= >= %%= - / %%/) (MACROS = /= < > <= >= + CL:* - /)) (* Copyright (c) 1985 by Xerox Corporation. All rights reserved.) (PRETTYCOMPRINT CMLARITHCOMS) (RPAQQ CMLARITHCOMS ((RECORDS RATIO COMPLEX) (FNS PLUSP) (* MINUSP ODDP EVENP are close enough) (FNS = /= < > <= >=) (MACROS = /= < > <= >=) (FNS %%=) (MACROS =) (* MAX and MIN are OK) (P (MOVD (QUOTE PLUS) (QUOTE +)) (MOVD (QUOTE TIMES) (QUOTE CL:*))) (PROP DMACRO + CL:*) (FNS - / %%/) (PROP DMACRO - /) (FNS 1+ 1-) (MACROS 1+ 1-))) [DECLARE: EVAL@COMPILE (DATATYPE RATIO (NUMERATOR DENOMINATOR)) (QUOTE (no RECORD declaration for COMPLEX)) ] (/DECLAREDATATYPE (QUOTE RATIO) (QUOTE (POINTER POINTER)) (QUOTE ((RATIO 0 POINTER) (RATIO 2 POINTER))) (QUOTE 4)) (DEFINEQ (PLUSP (CL:LAMBDA (NUMBER) (GREATERP NUMBER 0))) ) (* MINUSP ODDP EVENP are close enough) (DEFINEQ (= (CL:LAMBDA (NUMBER &REST MORE-NUMBERS) (* lmm "16-Jul-85 16:51") (for X in MORE-NUMBERS always (%%= NUMBER X)))) (/= [CL:LAMBDA (&REST NUMBERS) (* lmm "16-Jul-85 16:56") (for X on NUMBERS always (for Y in (CDR X) always (NOT (= (CAR X) Y]) (< [CL:LAMBDA (&REST MORE-NUMBERS) (* lmm "16-Jul-85 17:03") (for X on MORE-NUMBERS while (CDR X) always (LESSP (CAR X) (CADR X]) (> [CL:LAMBDA (&REST MORE-NUMBERS) (* lmm "16-Jul-85 17:04") (for X on MORE-NUMBERS while (CDR X) always (GREATERP (CAR X) (CADR X]) (<= [CL:LAMBDA (&REST MORE-NUMBERS) (* lmm "16-Jul-85 17:18") (for X on MORE-NUMBERS while (CDR X) always (LEQ (CAR X) (CADR X]) (>= [CL:LAMBDA (&REST MORE-NUMBERS) (* lmm "16-Jul-85 17:19") (for X on MORE-NUMBERS while (CDR X) always (GEQ (CAR X) (CADR X]) ) (DECLARE: EVAL@COMPILE [PUTPROPS = DMACRO (DEFMACRO (N &REST NS) (COND ((CDR NS) (BQUOTE ([OPENLAMBDA (N) (AND (= N (\, (CAR NS))) (= N (\,@ (CDR NS] , N))) (T (BQUOTE (%%= (\, N) (\, (CAR NS] [PUTPROPS /= DMACRO (DEFMACRO (N &REST NS) (COND [NS (IF (CDR NS) THEN [LET [(VARS (FOR X IN (CONS N NS) COLLECT (LIST (GENSYM (QUOTE /=)) X] (BQUOTE ([OPENLAMBDA (\, (MAPCAR VARS (QUOTE CAR))) (AND (\,@ (for X on VARS join (for Y on (CDR VARS) collect (BQUOTE (NOT (= (\, (CAAR X)) (\, (CAAR Y] (\,@ (MAPCAR VARS (QUOTE CADR] ELSE (BQUOTE (NOT (= , N , (CAR NS] (T T] [PUTPROPS < DMACRO (DEFMACRO (N &REST NS) (COND ((NULL NS) T) [(CDR NS) (LET [(VARS (FOR X IN (CONS N NS) COLLECT (LIST (GENSYM (QUOTE /=)) X] (BQUOTE ([OPENLAMBDA (\, (MAPCAR VARS (QUOTE CAR))) (AND (\,@ (for X on VARS while (CDR X) collect (BQUOTE (LESSP (\, (CAAR X)) (\, (CAADR X] (\,@ (MAPCAR VARS (QUOTE CADR] (T (BQUOTE (LESSP (\, N) (\, (CAR NS] [PUTPROPS > DMACRO (DEFMACRO (N &REST NS) (COND ((NULL NS) T) [(CDR NS) (LET [(VARS (FOR X IN (CONS N NS) COLLECT (LIST (GENSYM (QUOTE /=)) X] (BQUOTE ([OPENLAMBDA (\, (MAPCAR VARS (QUOTE CAR))) (AND (\,@ (for X on VARS while (CDR X) collect (BQUOTE (GREATERP (\, (CAAR X)) (\, (CAADR X] (\,@ (MAPCAR VARS (QUOTE CADR] (T (BQUOTE (GREATERP (\, N) (\, (CAR NS] [PUTPROPS <= DMACRO (DEFMACRO (N &REST NS) (COND ((NULL NS) T) [(CDR NS) (LET [(VARS (FOR X IN (CONS N NS) COLLECT (LIST (GENSYM (QUOTE /=)) X] (BQUOTE ([OPENLAMBDA (\, (MAPCAR VARS (QUOTE CAR))) (AND (\,@ (for X on VARS while (CDR X) collect (BQUOTE (LEQ (\, (CAAR X)) (\, (CAADR X] (\,@ (MAPCAR VARS (QUOTE CADR] (T (BQUOTE (LEQ (\, N) (\, (CAR NS] [PUTPROPS >= DMACRO (DEFMACRO (N &REST NS) (COND ((NULL NS) T) [(CDR NS) (LET [(VARS (FOR X IN (CONS N NS) COLLECT (LIST (GENSYM (QUOTE /=)) X] (BQUOTE ([OPENLAMBDA (\, (MAPCAR VARS (QUOTE CAR))) (AND (\,@ (for X on VARS while (CDR X) collect (BQUOTE (GEQ (\, (CAAR X)) (\, (CAADR X] (\,@ (MAPCAR VARS (QUOTE CADR] (T (BQUOTE (GEQ (\, N) (\, (CAR NS] ) (DEFINEQ (%%= [LAMBDA (X Y) (* lmm "16-Jul-85 17:01") (* sort of like EQP) (if (AND (FIXP X) (FIXP Y)) then (IEQP X Y) else (FEQP X Y]) ) (DECLARE: EVAL@COMPILE [PUTPROPS = DMACRO (DEFMACRO (N &REST NS) (COND ((CDR NS) (BQUOTE ([OPENLAMBDA (N) (AND (= N (\, (CAR NS))) (= N (\,@ (CDR NS] , N))) (T (BQUOTE (%%= (\, N) (\, (CAR NS] ) (* MAX and MIN are OK) (MOVD (QUOTE PLUS) (QUOTE +)) (MOVD (QUOTE TIMES) (QUOTE CL:*)) (PUTPROPS + DMACRO (= . PLUS)) (PUTPROPS CL:* DMACRO (= . TIMES)) (DEFINEQ (- (CL:LAMBDA (NUMBER &REST NUMBERS) (IF (NULL NUMBERS) THEN (DIFFERENCE 0 NUMBER) ELSE (LET ((RESULT NUMBER)) (FOR X IN NUMBERS DO (SETQ RESULT (DIFFERENCE RESULT X))) RESULT)))) (/ [LAMBDA (NUMBER &REST NUMBERS) (IF (NULL NUMBERS) THEN (%%/ 1 NUMBER) ELSE (FOR X IN NUMBERS DO (SETQ NUMBER (%%/ NUMBER X)) FINALLY (RETURN X]) (%%/ [LAMBDA (X Y) (IF (EVENP X Y) THEN (QUOTIENT X Y) ELSE (ERROR "Ratios not implemented"]) ) (PUTPROPS - DMACRO [DEFMACRO (NUMBER &REST NUMBERS) (IF (NULL NUMBERS) THEN (BQUOTE (DIFFERENCE 0 (\, NUMBER))) ELSE (FOR X IN NUMBERS DO [SETQ NUMBER (BQUOTE (DIFFERENCE (\, NUMBER) (\, X] FINALLY (RETURN NUMBER]) (PUTPROPS / DMACRO [DEFMACRO (NUMBER &REST NUMBERS) (IF (NULL NUMBERS) THEN (BQUOTE (%%/ 0 (\, NUMBER))) ELSE (FOR X IN NUMBERS DO [SETQ NUMBER (BQUOTE (%%/ (\, NUMBER) (\, X] FINALLY (RETURN NUMBER]) (DEFINEQ (1+ [LAMBDA (X) (PLUS X 1]) (1- [LAMBDA (X) (DIFFERENCE X 1]) ) (DECLARE: EVAL@COMPILE (PUTPROPS 1+ DMACRO ((X) (PLUS X 1))) (PUTPROPS 1- DMACRO ((X) (DIFFERENCE X 1))) ) (PRETTYCOMPRINT CMLARITHCOMS) (RPAQQ CMLARITHCOMS [(RECORDS RATIO COMPLEX) (FNS PLUSP) (* MINUSP ODDP EVENP are close enough) (FNS = /= < > <= >=) (MACROS = /= < > <= >=) (FNS %%=) (MACROS =) (* MAX and MIN are OK) (P (MOVD (QUOTE PLUS) (QUOTE +)) (MOVD (QUOTE TIMES) (QUOTE CL:*))) (PROP DMACRO + CL:*) (FNS - / %%/) (PROP DMACRO - /) (FNS 1+ 1-) (MACROS 1+ 1-) (DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) (NLAML) (LAMA /= =]) (DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDTOVAR NLAMA ) (ADDTOVAR NLAML ) (ADDTOVAR LAMA /= =) ) (PUTPROPS CMLARITH COPYRIGHT ("Xerox Corporation" 1985)) (DECLARE: DONTCOPY (FILEMAP (NIL (1033 1107 (PLUSP 1043 . 1105)) (1155 2420 (= 1165 . 1330) (/= 1332 . 1557) (< 1559 . 1774) (> 1776 . 1990) (<= 1992 . 2204) (>= 2206 . 2418)) (5197 5504 (%%= 5207 . 5502)) (5947 6559 (- 5957 . 6207) (/ 6209 . 6421) (%%/ 6423 . 6557)) (7109 7211 (1+ 7119 . 7160) (1- 7162 . 7209))))) STOP