問題 2.35

(define (accumulate op initial sequence)
  (if (null? sequence)
      initial
      (op (car sequence)
          (accumulate op initial (cdr sequence)))))

(define (count-leaves t)
  (accumulate + 0 (map (lambda (l)
                         (if (not (pair? l)) 1
                             (count-leaves l))) t)))

;こんな定義できるのか?

(count-leaves (list 1 2 (list 3 4 (list 5 6)) (list 7 8 (list 9 10))))
-> 10

;できた。

;でも、いくら再帰したいからってこれはちょっと酷いのではないか。
;これはいくらなんでも可読性が低すぎやしないか。
;もはやあまり頭の中でおってない。半分程度勘でかいてる。