The latest CVS versions of CMUCL have a few problems with maxima.
First, the USER package no longer exists. This is easily fixed.
Second, cmucl now says (type-of 1) is an (integer 1 1). This breaks
maclisp-typep in commac.lisp because (maclisp-typep 1) returns
'(integer 1 1) instead of 'fixnum. In turn, this means diff(x^2,x),
doesn't actually differentiate anymore, among other problems.
maclisp-typep is a pretty complex way of getting some standardized
types and I propose the following replacement. This appears to work
and gives the expected test results. I think a better alternative
would be to find all uses of maclisp-typep (and ml-typep) and replace
with with a real CL type-of, CL typep, or CL subtypep as appropriate.
Ray
(defun maclisp-typep (x &optional type)
(cond (type
(lisp:let ((pred (get type 'ml-typep)))
(cond (pred
(funcall pred x))
(t (typep x type)))))
(t
(typecase x
(cl:cons 'list)
(cl:fixnum 'fixnum)
(cl:integer 'bignum)
(cl:float 'flonum)
(cl:number 'number)
(cl:array 'array)
(cl:hash-table 'hash-table)
(t
(type-of x-type))))))