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


define flatten ();
 
define flatten (list) {
    variable item,
        retval,
        val;
    if (typeof(list) != List_Type) {
        retval = list;
    } else {
        retval = {};
        foreach item (list) {
            foreach val (flatten(item)) {
                list_append(retval, val);
            }
        }
    }
    return retval;
}