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