Flatten a list: Difference between revisions

(added Haskell)
Line 48:
-- implemented as multiway tree:
 
-- since Data.Tree represents trees where nodes have values too,
-- we use a list as that value, where a node will have an empty list value,
-- and a leaf will have a one-element list value and no subtrees
list :: Tree [Int]
list = Node [] [
Line 67 ⟶ 70:
<pre>*Main> flattenList list
[1,2,3,4,5,6,7,8]</pre>
 
Alternately:
<lang haskell>data Tree a = Leaf a | Node [Tree a]
 
flatten :: Tree a -> [a]
flatten (Leaf x) = [x]
flatten (Node xs) = concatMap flatten xs
 
main = print $ flatten $ Node [Node [Leaf 1], Leaf 2, Node [Node [Leaf 3, Leaf 4], Leaf 5], Node [Node [Node []]], Node [Node [Node [Leaf 6]]], Leaf 7, Leaf 8, Node []]
 
-- output: [1,2,3,4,5,6,7,8]</lang>
 
=={{header|J}}==
 
Anonymous user