Name: Anonymous 2012-10-16 1:27
Because he preferred to fold.
map = (flip foldr) [] . ((.) (:))
((^).(^))
map = flip foldr [] . fmap (:)
(define (map1 fn lis)
(reverse (fold (lambda (acc x)
(cons (fn x) acc))
'()
lis)))
(define (fold fn x lis)
(if (null? lis)
x
(fold fn (fn x (car lis)) (cdr lis))))
(define (reverse lis)
(fold (lambda (acc x)
(cons x acc))
'()
lis))
(define (map1 fn lis)
(reverse (fold (lambda (acc x)
(cons (fn x) acc))
'()
lis)))
(define (zip lis acc)
(cond ((null? lis) '())
((null? (car lis)) (reverse acc))
(else (zip (map1 cdr lis)
(cons (map1 car lis) acc)))))
(define (map fn . argss)
(map1 (lambda (args)
(apply fn args))
(zip argss '())))