I have a Scheme function that has the following attributes: It counts the number of leaf nodes a nested list structure, ignoring #f. It uses a recursive procedure:
How can I turn the following code into the programming language Clojure?
(define (x lis)
(cond ((null? lis) 0)
((not (list? (car lis)))
(cond
((eq? (car lis) #f) (x (cdr lis)))
(else (+ 1 (x (cdr lis))))))
(else (+ (x (car lis)) (x (cdr lis))))))
The transparent translation is
(defn x [lis]
(cond (empty? lis) 0
(not (coll? (first lis)))
(if (= (first lis) false)
(x (rest lis))
(inc (x (rest lis))))
:else (+ (x (first lis)) (x (rest lis)))))
Or did you ask about clojure specific solution?
Edited (clojure specific solution ver.1).
(defn x [lis]
(count (filter (partial not= false) (flatten lis))))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With