Lisp

(defmacro listify (x) x)

(macroexpand '(listify (node "" ((leaf "")(leaf "")) )))

FlatMap and Flattening?
List Matching?
Spread Operator?



Experimenting

parse :node name nodes
    {
        :text
            ( concat
                "node ${name}"
                "${name} -> ${(map (map nodes parse) .name).join(',')}"
                "\n"
                (map (map nodes parse) .text).join('\n')
                "\n\n"
            )
        :name name
    }
    
parse :leaf name
    {
        :text "node ${name}"
        :name "${name}"
    
    }

(parse 
    '(node "root"
        (leaf "A")    
        (leaf "B")    
    )
)
Meta
e4e65ea9-48d1-4969-9b95-4b31c3babf98