Wouldn't it be sufficient to do (eql 1 (cadr x)) instead of
(and(fixnump...)(= 1 ..)) ?
If (cadr x) were not a fixnum, it certainly wouldn't be eql to 1.
.. (Barton's correction??)
.. also, I think it would be appropriate to extensively comment this
function, while
... you have figured out what it does.
>
>to
>
>(defun testt (x)
> (cond ((mnump x) x)
> ((null (cddr x)) (cadr x))
> ((and (fixnump (cadr x)) (= 1 (cadr x))) ;; <--- changed!
> (cond ((null (cdddr x)) (caddr x)) (t (rplacd x (cddr x)))))
> (t (testtneg x))))
>
>
>