diff options
author | Kevin Ryde <user42@zip.com.au> | 2004-12-06 00:09:14 +0000 |
---|---|---|
committer | Kevin Ryde <user42@zip.com.au> | 2004-12-06 00:09:14 +0000 |
commit | 49ae1e250f4e8dd50dbe5ae29ea59ace413e1013 (patch) | |
tree | c74463d74e7316ae615c2a683502514f607aede8 /srfi/srfi-1.scm | |
parent | 41ab236c7628e8c0948cc7dddd9496e9155e3496 (diff) | |
download | guile-49ae1e250f4e8dd50dbe5ae29ea59ace413e1013.tar.gz |
(alist-delete): Change to a tail-recursive form.
Diffstat (limited to 'srfi/srfi-1.scm')
-rw-r--r-- | srfi/srfi-1.scm | 8 |
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?))) |