mini / maxi functions



If there are no objections, I'll commit (minmax.lisp) the changes
proposed by Barton and make the corresponding changes in the
documentation and in the descriptive package:



(defmacro opapply (op l)
  `(simplify (cons (list ,op) ,l)))

(defun $lmax (x)
  (cond ((or ($listp x) ($setp x)) (opapply '$max (margs x)))
     (($matrixp x)
      (opapply 'mlist (mapcar #'(lambda (s) (opapply '$max s))
(transpose (mcx (margs x))))))
     (t (merror "The argument to 'lmax' must be a list, set, or
matrix."))))
    
(defun $lmin (x)
  (cond ((or ($listp x) ($setp x)) (opapply '$min (margs x)))
     (($matrixp x)
      (opapply 'mlist (mapcar #'(lambda (s) (opapply '$min s))
(transpose (mcx (margs x))))))
     (t (merror "The argument to 'lmin' must be a list, set, or
matrix."))))



mini & maxi will be removed from the documentation and transformed into
lmin & lmax wrappers to maintain back portability.

Thanks.

--
Mario