(defun test-loop () (let ((orig (list 1 2 3 'x 4 5 6 7 'x 8 9)) (delimiter 'x)) (loop for list = orig then tail for (head tail) = (loop for sublist on list until (eql (car sublist) delimiter) collect (car sublist) into first-part finally (return (list first-part (cdr sublist)))) until (endp list) collect head)))