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


xs =  [[1], 2, [[3,4], 5], [[[]]], [[[6]]], 7, 8, []]
 
flat = flat' []
       where flat' n [] = n
             flat' n (x::xs) 
               | x is List = flat' (flat' n xs) x
               | else = x :: flat' n xs
 
flat xs