{- Exercise 13.1 -} data Formula a = Atom a | Con (Formula a) (Formula a) | Dis (Formula a) (Formula a) | Neg (Formula a) | Top | Bot deriving (Show, Eq) simp :: Formula a -> Formula a simp f = undefined substitute :: Eq a => Formula a -> a -> Bool -> Formula a substitute f a val = undefined {- Exercise 13.2 -} -- use foldr prefixes :: [a] -> [[a]] prefixes = undefined -- use foldl suffixes :: [a] -> [[a]] suffixes = undefined {- Exercises 13.3 -} firstMissing :: [Integer] -> Integer firstMissing = undefined {- Exercise 13.4 -} data Tree a = Empty | Node (Tree a) a (Tree a) treeHeight :: Tree a -> Integer treeHeight = undefined