; list rotations

(define (rots xs)
  (define (rot1 xs)
    (append (cdr xs) (list (car xs))))
  (do ((n (length xs) (- n 1))
       (zs (list xs) (cons (rot1 (car zs)) zs)))
      ((= n 1) zs)))

(display (rots '(a b c d e)))