Update of /project/movitz/cvsroot/movitz/losp/muerte In directory cl-net:/tmp/cvs-serv16602
Modified Files: complexes.lisp Log Message: Improved functions imagpart and realpart.
--- /project/movitz/cvsroot/movitz/losp/muerte/complexes.lisp 2008/07/09 20:17:46 1.3 +++ /project/movitz/cvsroot/movitz/losp/muerte/complexes.lisp 2009/07/19 18:52:08 1.4 @@ -6,7 +6,7 @@ ;;;; Author: Frode Vatvedt Fjeld ;;;; Distribution: See the accompanying file COPYING. ;;;; -;;;; $Id: complexes.lisp,v 1.3 2008/07/09 20:17:46 ffjeld Exp $ +;;;; $Id: complexes.lisp,v 1.4 2009/07/19 18:52:08 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -17,8 +17,7 @@
(provide :muerte/complexes)
-(defstruct (complex (:constructor make-complex-number) - (:conc-name #:||) +(defstruct (complex (:constructor make-complex (realpart imagpart)) (:predicate complexp)) realpart imagpart) @@ -28,5 +27,23 @@ (check-type imagpart real) (if (= 0 imagpart) realpart - (make-complex-number :realpart realpart - :imagpart imagpart))) + (make-complex realpart imagpart))) + +(defmethod print-object ((x complex) stream) + (format stream "#c(~W ~W)" + (complex-realpart x) + (complex-imagpart x))) + +(defun realpart (x) + (etypecase x + (complex + (complex-realpart x)) + (real + x))) + +(defun imagpart (x) + (etypecase x + (complex + (complex-imagpart x)) + (real + 0)))