]> git.rkrishnan.org Git - yorgey.git/blob - hw5/Calc.hs
ef4fd2e2542a1d2ccf8cbb22ed01e335d2f42b74
[yorgey.git] / hw5 / Calc.hs
1 {-# OPTIONS_GHC -Wall #-}
2
3 module Calc where
4
5 import ExprT
6 import Parser
7
8 eval :: ExprT -> Integer
9
10 -- exercise 1
11 eval (Lit n) = n
12 eval (Add e1 e2) = eval e1 + eval e2
13 eval (Mul e1 e2) = eval e1 * eval e2
14
15 -- exercise 2
16 evalStr :: String -> Maybe Integer
17 -- evalStr s = case (parseExp Lit Add Mul s) of
18 --               Just e -> Just (eval e)
19 --              Nothing -> Nothing
20 evalStr s = fmap eval (parseExp Lit Add Mul s)