Как я могу получить все возможные перестановки списка с 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)

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