-- tree data structure data Tree a = Leaf | Node (Tree a) a (Tree a) -- base case, add to empty tree insert Leaf item = Node (Leaf) item (Leaf) -- add to an inner node insert (Node left this right) item = if item < this then Node (insert left item) this right else Node left this (insert right item) -- traverse the list (return a string) traverse Leaf = "" traverse (Node left this right) = (traverse left) ++ (show this) ++ " " ++ (traverse right) -- a main function main = do let tree = foldl insert (Leaf) [5, 6, 1, 99, 23, 42, 2, 18, 78] putStr (traverse tree)