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


Structure RCList
  Value.i
  List A.RCList()
EndStructure
 
Procedure Flatten(List A.RCList())
  ResetList(A())
  While NextElement(A())
    With A()
      If \Value
        Continue
      Else
        ResetList(\A())
        While NextElement(\A())
          If \A()\Value: A()\Value=\A()\Value: EndIf
        Wend
      EndIf
      While ListSize(\A()): DeleteElement(\A()): Wend
      If Not \Value: DeleteElement(A()): EndIf
    EndWith
  Wend
EndProcedure