25 lines
418 B
Haskell
25 lines
418 B
Haskell
|
data Result a
|
||
|
= Ok a String
|
||
|
| Err
|
||
|
deriving (Eq, Show)
|
||
|
|
||
|
{-
|
||
|
https://hub.darcs.net/ppk/calculator/browse/src/Parser.hs
|
||
|
-}
|
||
|
data Op = Plus | Mult
|
||
|
|
||
|
data Ast
|
||
|
= Val Int
|
||
|
| Expr Op Ast Ast
|
||
|
|
||
|
opDe :: Op -> (Int -> Int -> Int)
|
||
|
opDe Plus = (+)
|
||
|
opDe Mult = (*)
|
||
|
|
||
|
astDe :: Ast -> Int
|
||
|
astDe (Val n) = n
|
||
|
astDe (Expr op e1 e2) = (opDe op) (astDe e1) (astDe e2)
|
||
|
|
||
|
eg1 = Expr Plus (Val 2) (Expr Mult (Val 3) (Val 2))
|
||
|
a = astDe eg1
|