So (shift '(1 2 3)) would give

'((1 2 3) (2 3 1) (3 1 2))

and (shift '(1 1 1)) would get

'((1 1 1) (1 1 1) (1 1 1))

I wrote a function that shifts the list once, but I am not sure how to apply it so that it shows all possible shifts.

(define (shift-once lst) (cond ((null? lst) '()) ((null? (cdr lst)) lst) (else (append (cdr lst) (list (car lst))))))

Thanks in advance!