module Template_12(Stack, push, pop, isEmpty, size, empty, compile, runProgram, Expr(..), eval, Instr(..), merge, mNumbers, mNum) where import Stack(Stack, push, pop, isEmpty, size, empty) -- DO NOT CHANGE ANYTHING ABOVE THIS LINE -- Exercise 1 merge :: (Ord a) => [a] -> [a] -> [a] merge = undefined mNumbers :: [Integer] mNumbers = undefined mNum :: Int -> Integer mNum = undefined -- Exercise 2.2 and 2.3 data Expr = Var String | Num Integer | Minus Expr Expr | Times Expr Expr deriving Show eval a (Num n) = n eval a (Var x) = a x eval a (Minus e1 e2) = eval a e1 - eval a e2 eval a (Times e1 e2) = eval a e1 * eval a e2 data Instr = Const Integer | Load String | Subtract | Multiply deriving Show type Program = [Instr] runProgram :: (String -> Integer) -> [Instr] -> Integer runProgram = undefined compile :: Expr -> Program compile = undefined