1.1.2 Differences between LOOP and DO Example 1

;;; These functions remove duplicates from a list and return a 
;;; copy of the list with duplicates removed. The Loop Facility 
;;; code takes care of many iteration details and is more compact
;;; than the code that uses the DO macro.
(defun rem-dups-loop (list)                  ; Use Loop Facility 
  (loop for item in list                     ; constructs.
        unless (member item result)
          collect item into result
        finally (return result)))

(defun rem-dups-do (list) ; Use the DO macro. (let ((result nil)) (do* ((tail list (cdr tail)) (item (car tail) (car tail))) ((null tail) (nreverse result)) (unless (member item result) (push item result)))))

The Loop Facility - 9 SEP 1996

Generated with Harlequin WebMaker