Книга Дуга Хойта "Let over Lambda" описывает функцию быстрой сортировки для входных данных фиксированного размера с помощью сетей сортировки а>:
(defmacro! sortf (comperator &rest places)
(if places
`(tagbody
,@(mapcar
#`(let ((,g!a #1=,(nth (car a1) places))
(,g!b #2=,(nth (cadr a1) places)))
(if (,comperator ,g!b ,g!a)
(setf #1# ,g!b
#2# ,g!a)))
(build-batcher-sn (length places))))))
Откуда появился символ «a1» в выражениях «(car a1)» и «(cadr a1)»?
Кстати. 'defmacro!' - это макрос для определения макросов, который вводит синтаксис 'g! {symbol}' для создания нового символа с помощью 'gensym'. А build-batcher-sn создает сеть сортировки, используя алгоритм дозатора.