This predicate does not perform any type testing functions.
Since ECLiPSe 7.0, arrays are treated like lists, and also flattened.
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.