[movitz-cvs] CVS movitz/losp/muerte

ffjeld ffjeld at common-lisp.net
Mon Apr 21 19:29:17 UTC 2008


Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory clnet:/tmp/cvs-serv21807

Modified Files:
	arithmetic-macros.lisp 
Log Message:
Add number-double-dispatch-error.


--- /project/movitz/cvsroot/movitz/losp/muerte/arithmetic-macros.lisp	2008/03/17 17:24:42	1.21
+++ /project/movitz/cvsroot/movitz/losp/muerte/arithmetic-macros.lisp	2008/04/21 19:29:17	1.22
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Sat Jul 17 13:42:46 2004
 ;;;;                
-;;;; $Id: arithmetic-macros.lisp,v 1.21 2008/03/17 17:24:42 ffjeld Exp $
+;;;; $Id: arithmetic-macros.lisp,v 1.22 2008/04/21 19:29:17 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -22,6 +22,17 @@
 
 ;;;
 
+(defun number-double-dispatch-error (x y)
+  (when (not (typep x 'number))
+    (error 'type-error
+           :datum x
+           :expected-type 'number))
+  (when (not (typep y 'number))
+    (error 'type-error
+           :datum y
+           :expected-type 'number))
+  (error "Operation not implemented for numbers ~S and ~S." x y))
+
 (defmacro number-double-dispatch ((x y) &rest clauses)
   `(let ((x ,x) (y ,y))
      (cond ,@(mapcar (lambda (clause)
@@ -30,7 +41,7 @@
 			 `((and (typep x ',x-type) (typep y ',y-type))
 			   , at then-body)))
 		     clauses)
-	   (t (error "Not numbers or not implemented: ~S or ~S." x y)))))
+	   (t (number-double-dispatch-error x y)))))
 
 
 (define-compiler-macro evenp (x)




More information about the Movitz-cvs mailing list