From 23d919087ee749cc68a3f4cc80b40a30d646c516 Mon Sep 17 00:00:00 2001 From: Marius Vollmer Date: Sun, 23 Jul 2000 23:12:02 +0000 Subject: [PATCH] * common-list.scm (uniq): Made tail-recursive. Thanks to thi! --- ice-9/common-list.scm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/ice-9/common-list.scm b/ice-9/common-list.scm index 02d1858e2..ebb13fe5b 100644 --- a/ice-9/common-list.scm +++ b/ice-9/common-list.scm @@ -225,10 +225,11 @@ non-#f return values of P." (define-public (uniq l) "Return a list containing elements of L, with duplicates removed." - (if (null? l) - '() - (let ((u (uniq (cdr l)))) - (if (memq (car l) u) - u - (cons (car l) u))))) - + (let loop ((acc '()) + (l l)) + (if (null? l) + (reverse! acc) + (loop (if (memq (car l) acc) + acc + (cons (car l) acc)) + (cdr l)))))