Mercurial > emacs
changeset 53626:ee432d9e3bbd
(delete-dups): New function.
author | Luc Teirlinck <teirllm@auburn.edu> |
---|---|
date | Mon, 19 Jan 2004 23:48:11 +0000 |
parents | 144ae07b9f73 |
children | fca4f1a70cca |
files | lisp/subr.el |
diffstat | 1 files changed, 15 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/subr.el Mon Jan 19 15:18:22 2004 +0000 +++ b/lisp/subr.el Mon Jan 19 23:48:11 2004 +0000 @@ -209,6 +209,21 @@ (if (> n 0) (setcdr (nthcdr (- (1- m) n) x) nil)) x)))) +(defun delete-dups (list) + "Destructively return LIST, with `equal' duplicates removed. +LIST must be a proper list. The value of LIST after a call to +this function is undefined. Use \(setq LIST (delete-dups LIST)) +if you want to store the return value in LIST. Of several +`equal' occurrences of an element in LIST, the last one is kept." + (while (member (car list) (cdr list)) + (pop list)) + (let ((tail list)) + (while tail + (while (member (cadr tail) (cddr tail)) + (setcdr tail (cddr tail))) + (pop tail))) + list) + (defun number-sequence (from &optional to inc) "Return a sequence of numbers from FROM to TO (both inclusive) as a list. INC is the increment used between numbers in the sequence and defaults to 1.