You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
data Expr<br />
= Add Expr Expr<br />
| Mul Expr Expr<br />
| Sub Expr Expr<br />
| Lit Int<br />
deriving Show<br />
eval :: Expr -> Int<br />
eval ex = case ex of<br />
Add a b -> eval a + eval b<br />
Mul a b -> eval a * eval b<br />
Sub a b -> eval a - eval b<br />
Lit n -> n<br />
int :: Parser Expr<br />
int = do<br />
n (a -> a -> a) -> Parser (a -> a -> a)<br />
infixOp x f = reserved x >> return f<br />
addop :: Parser (Expr -> Expr -> Expr)<br />
addop = (infixOp ”+” Add) (infixOp ”-” Sub)<br />
mulop :: Parser (Expr -> Expr -> Expr)<br />
mulop = infixOp ”*” Mul<br />
run :: String -> Expr<br />
run = runParser expr<br />
main :: IO ()<br />
main = forever $ do<br />
putStr ”> ”<br />
a