RosettaCodeData/Task/Flatten-a-list/Haskell/flatten-a-list-1.hs
2023-07-01 13:44:08 -04:00

26 lines
752 B
Haskell

import Data.Tree (Tree(..), flatten)
-- [[1], 2, [[3,4], 5], [[[]]], [[[6]]], 7, 8, []]
-- implemented as multiway tree:
-- Data.Tree represents trees where nodes have values too, unlike the trees in our problem.
-- so 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
[]
[ 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 :: Tree [a] -> [a]
flattenList = concat . flatten
main :: IO ()
main = print $ flattenList list