Task

Write a function to flatten the nesting in an arbitrary list of values.

Your program should work on the equivalent of this list:

  [[1], 2, [[3, 4], 5], [[[]]], [[[6]]], 7, 8, []]

Where the correct result would be the list:

   [1, 2, 3, 4, 5, 6, 7, 8]

Related task

   Tree traversal


 
function flatten (list, result) {
    foreach item list {
        if (typeof(item) == "vector") {
            flatten (item, result)
        } else {
            result.append (item)
        }
    }
}
 
var l = [[1], 2, [[3,4], 5], [[[]]], [[[6]]], 7, 8, []]
var newl = []
flatten (l, newl)
 
// print out the nicely formatted result list
print ('[')
var comma = ""
foreach item newl {
    print (comma + item)
    comma = ", "
}
println("]")
 
 