Update of /project/movitz/cvsroot/movitz/losp/muerte In directory common-lisp.net:/tmp/cvs-serv7818
Modified Files: arithmetic-macros.lisp Log Message: Made + compiler-macro a bit smarter about constant sub-forms.
Date: Fri Jul 23 08:35:23 2004 Author: ffjeld
Index: movitz/losp/muerte/arithmetic-macros.lisp diff -u movitz/losp/muerte/arithmetic-macros.lisp:1.4 movitz/losp/muerte/arithmetic-macros.lisp:1.5 --- movitz/losp/muerte/arithmetic-macros.lisp:1.4 Tue Jul 20 01:53:50 2004 +++ movitz/losp/muerte/arithmetic-macros.lisp Fri Jul 23 08:35:23 2004 @@ -10,7 +10,7 @@ ;;;; Author: Frode Vatvedt Fjeld frodef@acm.org ;;;; Created at: Sat Jul 17 13:42:46 2004 ;;;; -;;;; $Id: arithmetic-macros.lisp,v 1.4 2004/07/20 08:53:50 ffjeld Exp $ +;;;; $Id: arithmetic-macros.lisp,v 1.5 2004/07/23 15:35:23 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -57,7 +57,13 @@ finally (return (if (zerop constant-term) non-constant-operands (cons constant-term non-constant-operands)))))) - `(+ (+ ,(first operands) ,(second operands)) ,@(cddr operands)))))) + (cond + ((null operands) + 0) + ((not (cdr operands)) + (check-type (car operands) integer) + (car operands)) + (t `(+ (+ ,(first operands) ,(second operands)) ,@(cddr operands))))))))
(define-compiler-macro 1+ (number) `(+ 1 ,number))