summaryrefslogtreecommitdiff
path: root/srfi/srfi-1.scm
diff options
context:
space:
mode:
authorKevin Ryde <user42@zip.com.au>2004-12-06 00:09:14 +0000
committerKevin Ryde <user42@zip.com.au>2004-12-06 00:09:14 +0000
commit49ae1e250f4e8dd50dbe5ae29ea59ace413e1013 (patch)
treec74463d74e7316ae615c2a683502514f607aede8 /srfi/srfi-1.scm
parent41ab236c7628e8c0948cc7dddd9496e9155e3496 (diff)
downloadguile-49ae1e250f4e8dd50dbe5ae29ea59ace413e1013.tar.gz
(alist-delete): Change to a tail-recursive form.
Diffstat (limited to 'srfi/srfi-1.scm')
-rw-r--r--srfi/srfi-1.scm8
1 files changed, 4 insertions, 4 deletions
diff --git a/srfi/srfi-1.scm b/srfi/srfi-1.scm
index f0968bc15..056308b1d 100644
--- a/srfi/srfi-1.scm
+++ b/srfi/srfi-1.scm
@@ -707,12 +707,12 @@
(define (alist-delete key alist . rest)
(let ((k= (if (pair? rest) (car rest) equal?)))
- (let lp ((a alist))
+ (let lp ((a alist) (rl '()))
(if (null? a)
- '()
+ (reverse! rl)
(if (k= key (caar a))
- (lp (cdr a))
- (cons (car a) (lp (cdr a))))))))
+ (lp (cdr a) rl)
+ (lp (cdr a) (cons (car a) rl)))))))
(define (alist-delete! key alist . rest)
(let ((k= (if (pair? rest) (car rest) equal?)))