练习2.33-2.36


exercise 2.33
(define (map2 p sequence)
  (accumulate (lambda (x y) 
                (cons (p x)
                      y))
              nil sequence))
(define (append2 seq1 seq2)
  (accumulate cos seq1 seq2))
(define (length2 sequence)
  (accumulate (lambda (x y) (+ 1 y)) 0 sequence))

exercise 2.34
(define (horner-eval x coefficient-sequence)
  (accumulate (lambda (this-coeff higher-terms)
                (* (+ (* higher-terms x) this-coeff) x))
              0
              coefficient-sequence))

exercise 2.35
(define (count-leaves t)
  (accumulate +
              0
              (map (lambda (sub-t)
                     (if (pair? sub-t)
                         (count-leaves sub-t)
                         1))
                     t)))

exercise 2.36
(define (accumulate-n op init seqs)
  (if (null? (car seqs))
      nil
      (cons (accumulate op init (map car seqs))
            (accumulate-n op init (map cdr seqs)))))
(define s (list (list 1 2 3) (list 4 5 6) (list 7 8 9) (list 10 11 12)))

你可能感兴趣的:(练习2.33-2.36)