[ library(lists) | The ECLiPSe Libraries | 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.

### Modes and Determinism

• flatten(++, +, -) is det

### Fail Conditions

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

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.

Fail:
[eclipse]: flatten(2, [1,[3],2], [1,2,3]).
no.
```