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


let a => import 'arrays';
let s => import 'stream';
 
let flatten array =>
  a.stream array
  -> s.flatMap (@ f v => v {
      reflect 'Array' => a.stream v -> s.flatMap f;
    })
  -> s.collect
  ;