Prehadzujeme first a rest, a výsledný zoznam spájame pomocou append, ale tak aby zostal zoznamom.
(defun obrat (sv)
(cond ((ATOM sv) sv)
(T (append (obrat (rest sv)) (cons (obrat (first sv)) NIL)))
)
)
; Príklady:
(obrat '(1)) ; -> (1)
(obrat '(1 2 3)) ; -> (3 2 1)
(obrat '(1 2 (3 (4 5) 6 7))) ; -> ((7 6 (5 4) 3) 2 1)