diff options
author | Kevin Ryde <user42@zip.com.au> | 2003-12-02 21:13:42 +0000 |
---|---|---|
committer | Kevin Ryde <user42@zip.com.au> | 2003-12-02 21:13:42 +0000 |
commit | c6424115feccb175690eab6fd84e1cb1ef441e61 (patch) | |
tree | ab2d0e892e039ea9c43eacd8dd70cbf06c49ceb0 /srfi | |
parent | 110348aee92a143f66a905f9b631d190e374e15e (diff) | |
download | guile-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.scm | 18 |
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) |