Možným riešením je implementovať funkciu vracajúcu zoznam bez posledného prvku a v hlavnej funkcií zostaviť výsledný zoznam pomocou nej a funkcií append a last.
; Vráti zoznam bez posledného prvku.
(defun except (zoz)
(cond ((null zoz) NIL)
((null (rest zoz)) NIL)
(T (cons (first zoz) (except (rest zoz))))
)
)
; Hlavná funkcia.
(defun rotp (zoz)
(append (last zoz) (except zoz))
)
; Príklady:
(rotp '(1 2 3 4 5)) ; -> (5 1 2 3 4)
(rotp '(1 2)) ; -> (2 1)
(rotp '(7)) ; -> (7)