(defun least (l &optional (filter #'identity)) (let ((out most-positive-fixnum)) (dolist (x l out) (let ((x1 (funcall filter x))) (if (< x1 out) (setf out x1)))))) (defun most (l &optional (filter #'identity)) (let ((out most-negative-fixnum)) (dolist (x l out) (let ((x1 (funcall filter x))) (if (> x1 out) (setf out x1))))))