X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/ed3ce6c2352d76442b79badfbe08bc6ecde6934d..9a3cb4610ab59001fd44c13dcdc6ea206acf0e50:/src/utilities.lisp diff --git a/src/utilities.lisp b/src/utilities.lisp index a496283..1670f55 100644 --- a/src/utilities.lisp +++ b/src/utilities.lisp @@ -717,18 +717,18 @@ (setf (gethash k seen) item))))) sequence))) ((listp sequence) - (mapl (lambda (tail) - (let* ((item (car tail)) - (rest (cdr tail)) - (match (member (funcall key item) rest - :test test :key key))) - (when match (funcall report item (car match))))) - sequence)) + (do ((tail sequence (cdr tail)) + (i 0 (1+ i))) + ((endp tail)) + (let* ((item (car tail)) + (match (find (funcall key item) sequence + :test test :key key :end i))) + (when match (funcall report item match))))) ((vectorp sequence) (dotimes (i (length sequence)) (let* ((item (aref sequence i)) (pos (position (funcall key item) sequence - :key key :test test :start (1+ i)))) + :key key :test test :end i))) (when pos (funcall report item (aref sequence pos)))))) (t (error 'type-error :datum sequence :expected-type 'sequence))))