[ library(lists) | Reference Manual | Alphabetic Index ]

flatten(++MaxDepth, +NestedList, ?FlatList)

Depth-limited list flattening
++MaxDepth
Maximum depth to flatten.
+NestedList
List.
?FlatList
List or variable.

Description

Like flatten/2, but does not flatten beyond the specified depth MaxDepth. So flatten(0, List, Flat) just unifies Flat and List (no flattening), flatten(1, List, Flat) just flattens the top-level list of List, etc.

This predicate does not perform any type testing functions.

Since ECLiPSe 7.0, arrays are treated like lists, and also flattened.

Modes and Determinism

Fail Conditions

Fails if FlatList does not unify with the flattened version of NestedList.

Resatisfiable

No.

Examples

   Success:
      [eclipse]: flatten(0, [[1,2,[3,4],5],6,[7]], L).
      L = [[1, 2, [3, 4], 5], 6, [7]]
      yes.
      [eclipse]: flatten(1, [[1,2,[3,4],5],6,[7]], L).
      L = [1, 2, [3, 4], 5, 6, 7]
      yes.
      [eclipse]: flatten(2, [[1,2,[3,4],5],6,[7]], L).
      L = [1, 2, 3, 4, 5, 6, 7]
      yes.
      [eclipse]: flatten(3, [[1,2,[3,4],5],6,[7]], L).
      L = [1, 2, 3, 4, 5, 6, 7]
      yes.

      [eclipse]: flatten(1, a, L).
      L = [a]
      yes.
      
   Fail:
      [eclipse]: flatten(2, [1,[3],2], [1,2,3]).
      no.

See Also

flatten / 2, sort / 2, sort / 4, length / 2, member / 2