module Solutions where
-- 1)
import List
mergesort [] = []
mergesort (pivot:xs) = mergesort less ++ [pivot] ++ mergesort greater
    where (less, greater) = partition (< pivot) xs

-- 2)
x ~~ [] = x
[] ~~ y = y
(x:xs) ~~ (y:ys) | x < y  = x : xs ~~ (y:ys)
                 | x == y = x : xs ~~ ys
                 | x > y  = y : (x:xs) ~~ ys

-- 3)
hamming = 1 : map (* 2) hamming
           ~~ map (* 3) hamming
           ~~ map (* 5) hamming

-- 4)
data Tree a = Tip | Branch (Tree a) a (Tree a)
inorder Tip = []
inorder (Branch l v r) = inorder l ++ [v] ++ inorder r

-- 5)
treeEqual a b = inorder a == inorder b
