From: Dan S. <ds...@us...> - 2002-12-23 04:06:13
|
Update of /cvsroot/maxima/maxima/src In directory sc8-pr-cvs1:/tmp/cvs-serv19516/maxima/src Modified Files: set.lisp Log Message: Corrected problem with Disjointp which failed if sets were disjoint. Declared Intersection and Union defmfun instead of defmspec. Index: set.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/set.lisp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- set.lisp 29 Nov 2002 01:43:14 -0000 1.1 +++ set.lisp 23 Dec 2002 04:06:10 -0000 1.2 @@ -93,7 +93,7 @@ ;; The maxima function call union(a1,a2,...an) forms the union of the ;; sets a1,a2,...an. -(defmspec $union (a) +(defmfun $union ( &rest a) (setq a (margs a)) (cond ((member nil (mapcar #'$listp a)) (merror "Each argument to UNION must be a list.")) @@ -111,7 +111,7 @@ ;; Return the intersection of lists a and b. Use element_equalp for the ;; equality test. Signal an error if a or b aren't lists. -(defmspec $intersection (a) +(defmfun $intersection ( &rest a) (setq a (margs a)) (cond ((member nil (mapcar #'$listp a)) (merror "Each argument to INTERSECTION must be a list.")) @@ -186,7 +186,7 @@ (defun $disjointp (a b) (cond ((and ($listp a) ($listp b)) - (like nil (intersection (margs a) (margs b) :test #'$elem_equalp))) + (not (intersection (margs a) (margs b) :test #'$elem_equalp))) (t (merror "Both arguments to DISJOINTP must be lists.")))) ;; Return those elements of a for which the predicate f evaluates |