Doug Hoyte による本「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))))))
'(car a1)' と '(cadr a1)' という式の記号 'a1' はどこから来たのですか?
ところで。「デフマクロ!」'gensym' を介して新しいシンボルを作成するために 'g!{symbol}' 構文を導入するマクロを定義するマクロです。そして、'build-batcher-sn' は、Batcher のアルゴリズムを使用してソーティング ネットワークを構築します。