553 |
'() |
'() |
554 |
(append! (apply f (map1 car l)) (lp (map1 cdr l))))))) |
(append! (apply f (map1 car l)) (lp (map1 cdr l))))))) |
555 |
|
|
556 |
(define (map! f list1 . rest) |
;; OPTIMIZE-ME: Re-use cons cells of list1 |
557 |
(if (null? rest) |
(define map! map) |
|
(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))))) |
|
558 |
|
|
559 |
(define (pair-for-each f clist1 . rest) |
(define (pair-for-each f clist1 . rest) |
560 |
(if (null? rest) |
(if (null? rest) |