summaryrefslogtreecommitdiff
path: root/srfi
diff options
context:
space:
mode:
authorKevin Ryde <user42@zip.com.au>2003-12-02 21:13:42 +0000
committerKevin Ryde <user42@zip.com.au>2003-12-02 21:13:42 +0000
commitc6424115feccb175690eab6fd84e1cb1ef441e61 (patch)
treeab2d0e892e039ea9c43eacd8dd70cbf06c49ceb0 /srfi
parent110348aee92a143f66a905f9b631d190e374e15e (diff)
downloadguile-c6424115feccb175690eab6fd84e1cb1ef441e61.tar.gz
(map!): Define as an alias for map, previous definition was not tail-recursive.
Diffstat (limited to 'srfi')
-rw-r--r--srfi/srfi-1.scm18
1 files changed, 2 insertions, 16 deletions
diff --git a/srfi/srfi-1.scm b/srfi/srfi-1.scm
index 171c98c1b..a4ce2addb 100644
--- a/srfi/srfi-1.scm
+++ b/srfi/srfi-1.scm
@@ -553,22 +553,8 @@
'()
(append! (apply f (map1 car l)) (lp (map1 cdr l)))))))
-(define (map! f list1 . rest)
- (if (null? rest)
- (let lp ((l list1))
- (if (null? l)
- '()
- (begin
- (set-car! l (f (car l)))
- (set-cdr! l (lp (cdr l)))
- l)))
- (let lp ((l (cons list1 rest)) (res list1))
- (if (any1 null? l)
- '()
- (begin
- (set-car! res (apply f (map1 car l)))
- (set-cdr! res (lp (map1 cdr l) (cdr res)))
- res)))))
+;; OPTIMIZE-ME: Re-use cons cells of list1
+(define map! map)
(define (pair-for-each f clist1 . rest)
(if (null? rest)