CoCoA:Flatten
From ApCoCoAWiki
Flatten
flatten a list
Description
Components of lists may be lists themselves, i.e., lists may be
nested. With one argument this function returns the list obtained
from the list L by removing all nesting, bringing all elements to the top level. With the optional second argument, N, nesting is removed down N levels. Thus, the elements of M := Flatten(L,1) are formed as follows: go through the elements of L one at a time; if an elements is not a list, add it to M; if an element is a list, add all of its elements to M. Recursively, Flatten(L,N) = Flatten(Flatten(L,N-1),1). For N large, depending on L, Flatten(L,N) gives the same result as Flatten(L).
Example
Flatten([1,[<quotes>a</quotes>,<quotes>b</quotes>,[2,3,4],<quotes>c</quotes>,<quotes>d</quotes>],5,6]); [1, <quotes>a</quotes>, <quotes>b</quotes>, 2, 3, 4, <quotes>c</quotes>, <quotes>d</quotes>, 5, 6] ------------------------------- L := [1,2, [3,4], [5, [6,7,[8,9]]]]; Flatten(L,1); [1, 2, 3, 4, 5, [6, 7, [8, 9]]] ------------------------------- Flatten(It,1); [1, 2, 3, 4, 5, 6, 7, [8, 9]] ------------------------------- Flatten(L,2); -- same as in the previous line [1, 2, 3, 4, 5, 6, 7, [8, 9]] ------------------------------- Flatten(L,3); -- same as Flatten(L) [1, 2, 3, 4, 5, 6, 7, 8, 9] -------------------------------
Syntax
Flatten(L:LIST):LIST Flatten(L:LIST,N:INT):LIST
<type>list</type>