2 つの並べ替えられていないリストがあり、並べ替えられ、すべての要素が一意である別のリストを作成する必要があります。
要素は両方のリストで複数回発生する可能性があり、元はソートされていません。
私の関数は次のようになります。
(defun merge-lists (list-a list-b sort-fn)
"Merges two lists of (x, y) coordinates sorting them and removing dupes"
(let ((prev nil))
(remove-if
(lambda (point)
(let ((ret-val (equal point prev)))
(setf prev point)
ret-val))
(sort
(merge 'list list-a list-b sort-fn) ;'
sort-fn))))
同じことを達成するためのより良い方法はありますか?
呼び出しの例:
[CL]> (merge-lists '(9 8 4 8 9 7 2) '(1 7 3 9 2 6) #'>)
==> (9 8 7 6 4 3 2 1)