21 lines
446 B
Scheme
21 lines
446 B
Scheme
#lang sicp
|
|
|
|
(define (accumulate op initial sequence)
|
|
(if (null? sequence)
|
|
initial
|
|
(op (car sequence)
|
|
(accumulate op initial (cdr sequence)))))
|
|
|
|
(define (map p sequence)
|
|
(accumulate (lambda (x y) (cons (p x)
|
|
y))
|
|
nil
|
|
sequence))
|
|
|
|
(define (append seq1 seq2)
|
|
(accumulate cons seq2 seq1))
|
|
|
|
(define (inc x y) (+ y 1))
|
|
|
|
(define (length sequence)
|
|
(accumulate inc 0 sequence))
|