From c6424115feccb175690eab6fd84e1cb1ef441e61 Mon Sep 17 00:00:00 2001 From: Kevin Ryde Date: Tue, 2 Dec 2003 21:13:42 +0000 Subject: [PATCH] (map!): Define as an alias for map, previous definition was not tail-recursive. --- srfi/srfi-1.scm | 18 ++---------------- 1 file 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)