@flatten(t:tab)
@flatten(t:tab, n:numeric)

flatten(t) returns a new tab where where the nesting structure of t has been flattened. For example,

       @flatten([[1, 2], [3], [[], [4, 5]]]) ->  [1, 2, 3, 4, 5]

flatten(t, n) returns a new tab where the first n levels of nesting have been flattened. If n == 0, the function is the identity. If n is strictly negative, it is equivalent to without the level argument.

       @flatten([1, [2, [3, 3], 2], [[[4, 4, 4]]]], 0)  -> [1, [2, [3, 3], 2], [[[4, 4, 4]]]]
       @flatten([1, [2, [3, 3], 2], [[[4, 4, 4]]]], 1)  -> [1, 2, [3, 3], 2, [[4, 4, 4]]]
       @flatten([1, [2, [3, 3], 2], [[[4, 4, 4]]]], 2)  -> [1, 2, 3, 3, 2, [4, 4, 4]]
       @flatten([1, [2, [3, 3], 2], [[[4, 4, 4]]]], 3)  -> [1, 2, 3, 3, 2, 4, 4, 4]
       @flatten([1, [2, [3, 3], 2], [[[4, 4, 4]]]], 4)  -> [1, 2, 3, 3, 2, 4, 4, 4]
       @flatten([1, [2, [3, 3], 2], [[[4, 4, 4]]]], -1) -> [1, 2, 3, 3, 2, 4, 4, 4]

See also some other lisp like functions: @car, @cdr, @concat, @cons, @empty, @drop, @take.

See also Tab Manipulations @binary_search    @car    @cdr    @clear    [@clone]    @concat    @cons    @copy    @count    @dim    @domain    @drop    @empty    @find    @flatten    @gnuplot    @insert    @iota    @is_list    @is_prefix    @is_subsequence    @is_suffix    @lace    @last    @listify    @map    @max_val    @median    @member    @normalize    @occurs    @parse    @permute    @push_back    @push_front    @range    @reduce    @remove    @remove_duplicate    @replace    @reshape    @resize    @reverse    @rotate    @scan    @scramble    @size    @slice    @sort    @sputter    @stutter    @succession    @tab_history    @tab_history_date    @tab_history_rdate    @take    @to_num