Как я могу получить все возможные перестановки списка с Common Lisp?

Я пытаюсь написать функцию Common Lisp, которая даст мне все возможные перестановки списка, используя каждый элемент только один раз. Например, список '(1 2 3) даст результат ((1 2 3) (1 3 2) (2 1 3) (2 3 1) (3 1 2) (3 2 1)).

Я уже написал что-то подобное, но это неуклюже, это не всегда работает, и я даже не очень понимаю это. Я не прошу код, просто, может быть, некоторые рекомендации о том, как думать об этом. Я не знаю много о написании алгоритмов.

Спасибо Джейсон

Ответы на вопрос(4)

Ваш ответ на вопрос