Flatten a list: Difference between revisions

added Haskell
m (→‎{{header|J}}: Add lang tags & comment)
(added Haskell)
Line 40:
<lang groovy>assert [[1], 2, [[3,4], 5], [[[]]], [[[6]]], 7, 8, []].flatten() == [1, 2, 3, 4, 5, 6, 7, 8]</lang>
 
=={{header|Haskell}}==
In Haskell we have to interpret this structure as an algebraic data type.
 
<lang Haskell>import Data.Tree
 
-- [[1], 2, [[3,4], 5], [[[]]], [[[6]]], 7, 8, []]
-- implemented as multiway tree:
 
list :: Tree [Int]
list = Node [] [
Node [] [Node [1] []],
Node [2] [],
Node [] [
Node [] [ Node [3] [],Node [4] []],
Node [5] []
],
Node [] [Node [] [Node [] []]],
Node [] [Node [] [Node [6] []]],
Node [7] [],
Node [8] [],
Node [] []
]
 
flattenList = concat.flatten</lang>
Flattening the list:
<pre>*Main> flattenList list
[1,2,3,4,5,6,7,8]</pre>
=={{header|J}}==
 
Anonymous user