Returns SEQ with the last HOW-MANY elements removed.
(defun but-tail (seq &optional (how-many 1))
"Returns SEQ with the last HOW-MANY elements removed."
(let ((seq-length (length seq)))
(cond
((<= 0 how-many seq-length)
(subseq seq 0 (- seq-length how-many)))
((< seq-length how-many)
(copy-seq seq))
(t
(but-head seq (- how-many))))))Source Context