20 lines
488 B
Scheme
20 lines
488 B
Scheme
;(define (count-leaves x)
|
|
; (cond ((null? x) 0)
|
|
; ((not (pair? x)) 1)
|
|
; (else (+ (count-leaves (car x))
|
|
; (count-leaves (cdr x))))))
|
|
|
|
(define (accumulate op initial sequence)
|
|
(if (null? sequence)
|
|
initial
|
|
(op (car sequence)
|
|
(accumulate op initial (cdr sequence)))))
|
|
|
|
|
|
(define (count-leaves x)
|
|
(accumulate + 0 (map (lambda (y)
|
|
(if (not (pair? y))
|
|
1
|
|
(+ (count-leaves (car y))
|
|
(count-leaves (cdr y))))) x)))
|