RosettaCodeData/Task/Flatten-a-list/Haskell/flatten-a-list-2.hs
2019-09-12 10:33:56 -07:00

23 lines
382 B
Haskell

data Tree a
= Leaf a
| Node [Tree a]
flatten :: Tree a -> [a]
flatten (Leaf x) = [x]
flatten (Node xs) = xs >>= flatten
main :: IO ()
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 []
]
-- [1,2,3,4,5,6,7,8]