Here is an implementation of butlast and but-n-last:(define (butlast lst)
(cond ((null? lst)
(error "Cannot apply butlast on an empty list"))
((null? (cdr lst)) ; a list of a single element
'())
(else (cons (car lst) (butlast (cdr lst))))))
(define (but-n-last lst n)
(cond ((< (length lst) n)
(error "The list is too short for but-n-last"))
((= (length lst) n)
'())
(else (cons (car lst) (but-n-last (cdr lst) n)))))