(defn fringe-seq [branch? children content tree] (letfn [(walk [node] (lazy-seq (if (branch? node) (if (empty? (children node)) (list (content node)) (mapcat walk (children node))) (list node))))] (walk tree)))