diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet index f882776..28dd3f0 100644 --- a/books/bookvol9.pamphlet +++ b/books/bookvol9.pamphlet @@ -3628,6 +3628,37 @@ An angry JHD - August 15th., 1984 @ +\defplist{is}{compIs} +<>= +(eval-when (eval load) + (setf (get '|is| 'special) '|compIs|)) + +@ + +\defun{compIs}{compIs} +\calls{compIs}{comp} +\calls{compIs}{coerce} +\usesdollar{compIs}{Boolean} +\usesdollar{compIs}{EmptyMode} +<>= +(defun |compIs| (arg m e) + (let (a b aval am tmp1 bval bm td) + (declare (special |$Boolean| |$EmptyMode|)) + (setq a (CADR arg)) + (setq b (CADDR arg)) + (when (setq tmp1 (|comp| a |$EmptyMode| e)) + (setq aval (CAR tmp1)) + (setq am (CADR tmp1)) + (setq e (CADDR tmp1)) + (when (setq tmp1 (|comp| b |$EmptyMode| e)) + (setq bval (CAR tmp1)) + (setq bm (CADR tmp1)) + (setq e (CADDR tmp1)) + (setq td (list (list '|domainEqual| aval bval) |$Boolean| e )) + (|coerce| td m))))) + +@ + \defplist{+->}{compLambda} <>= (eval-when (eval load) @@ -10961,6 +10992,7 @@ if \verb|$InteractiveMode| then use a null outputstream <> <> <> +<> <> <> <> diff --git a/changelog b/changelog index c6c21f4..a907e36 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,7 @@ +20101126 tpd src/axiom-website/patches.html 20101126.01.tpd.patch +20101126 tpd src/interp/postprop.lisp treeshake compiler +20101126 tpd src/interp/compiler.lisp treeshake compiler +20101126 tpd books/bookvol9 treeshake compiler 20101125 tpd src/axiom-website/patches.html 20101125.02.tpd.patch 20101125 tpd books/bookvol9 treeshake compiler 20101125 tpd src/axiom-website/patches.html 20101125.01.tpd.patch diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index 04cd661..76248d1 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -3274,5 +3274,7 @@ books/bookvol9 treeshake compiler
books/bookvol9 treeshake compiler
20101125.02.tpd.patch books/bookvol9 treeshake compiler
+20101126.01.tpd.patch +books/bookvol9 treeshake compiler
diff --git a/src/interp/compiler.lisp.pamphlet b/src/interp/compiler.lisp.pamphlet index cc69775..b1f1ef2 100644 --- a/src/interp/compiler.lisp.pamphlet +++ b/src/interp/compiler.lisp.pamphlet @@ -2573,39 +2573,6 @@ Compile return |T'|))))))))) @ -\subsection{compIs} -<<*>>= -;compIs(["is",a,b],m,e) == -; [aval,am,e] := comp(a,$EmptyMode,e) or return nil -; [bval,bm,e] := comp(b,$EmptyMode,e) or return nil -; T:= [["domainEqual",aval,bval],$Boolean,e] -; coerce(T,m) - -(DEFUN |compIs| (G170221 |m| |e|) - (PROG (|a| |b| |aval| |am| |LETTMP#1| |bval| |bm| T$) - (declare (special |$Boolean| |$EmptyMode|)) - (RETURN - (PROGN - (COND ((EQ (CAR G170221) '|is|) (CAR G170221))) - (SPADLET |a| (CADR G170221)) - (SPADLET |b| (CADDR G170221)) - (SPADLET |LETTMP#1| - (OR (|comp| |a| |$EmptyMode| |e|) (RETURN NIL))) - (SPADLET |aval| (CAR |LETTMP#1|)) - (SPADLET |am| (CADR |LETTMP#1|)) - (SPADLET |e| (CADDR |LETTMP#1|)) - (SPADLET |LETTMP#1| - (OR (|comp| |b| |$EmptyMode| |e|) (RETURN NIL))) - (SPADLET |bval| (CAR |LETTMP#1|)) - (SPADLET |bm| (CADR |LETTMP#1|)) - (SPADLET |e| (CADDR |LETTMP#1|)) - (SPADLET T$ - (CONS (CONS '|domainEqual| - (CONS |aval| (CONS |bval| NIL))) - (CONS |$Boolean| (CONS |e| NIL)))) - (|coerce| T$ |m|))))) - -@ \section{Functions for coercion by the compiler} \subsection{coerce} The function coerce is used by the old compiler for coercions. diff --git a/src/interp/postprop.lisp.pamphlet b/src/interp/postprop.lisp.pamphlet index 64b8c8d..6d9ea2c 100644 --- a/src/interp/postprop.lisp.pamphlet +++ b/src/interp/postprop.lisp.pamphlet @@ -73,7 +73,7 @@ ; (|has| |compHas|) ; (IF |compIf|) ; (|import| |compImport|) - (|is| |compIs|) +; (|is| |compIs|) (|Join| |compJoin|) ; (|+->| |compLambda|) (|leave| |compLeave|)