diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-03-16 14:15:42 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-03-16 14:15:42 +0100 |
| commit | 8c8f6155f1b05230c271059c52a503211aec872b (patch) | |
| tree | 53626fa32ad3f6178b42a9dc5db588ee01277cd5 /src/expr.hs | |
| parent | d17423cba7c15a26f835a6fa578ecb48b80d8aab (diff) | |
| download | computorv2-8c8f6155f1b05230c271059c52a503211aec872b.tar.gz computorv2-8c8f6155f1b05230c271059c52a503211aec872b.tar.bz2 computorv2-8c8f6155f1b05230c271059c52a503211aec872b.zip | |
file Renaming, basic REPL
Diffstat (limited to 'src/expr.hs')
| -rw-r--r-- | src/expr.hs | 43 |
1 files changed, 0 insertions, 43 deletions
diff --git a/src/expr.hs b/src/expr.hs deleted file mode 100644 index e6f1f25..0000000 --- a/src/expr.hs +++ /dev/null @@ -1,43 +0,0 @@ -module Expr where - -import Atom - - -data Expr - = EAtom Atom - | Add Expr Expr - | Sub Expr Expr - | Mul Expr Expr - | Div Expr Expr - | Mod Expr Expr - | Exp Expr Expr - | Variable String - | Function String Expr - - - -eval :: Expr -> Maybe Atom -eval (EAtom a) = Just a -eval (Add e1 e2) = evalInfix e1 e2 (+?) -eval (Sub e1 e2) = evalInfix e1 e2 (-?) -eval (Mul e1 e2) = evalInfix e1 e2 (*?) -eval (Div e1 e2) = evalInfix e1 e2 (/?) -eval (Mod e1 e2) = evalInfix e1 e2 (%?) -eval (Exp e1 e2) = evalInfix e1 e2 (^?) -eval _ = Nothing - -evalInfix :: Expr -> Expr -> (Atom -> Atom -> Maybe Atom) -> Maybe Atom -evalInfix e1 e2 f = do a <- eval e1 - b <- eval e2 - f a b - -instance Show Expr where - show (EAtom a) = show a - show (Add e1 e2) = show e1 ++ " + " ++ show e2 - show (Sub e1 e2) = show e1 ++ " - " ++ show e2 - show (Mul e1 e2) = show e1 ++ " * " ++ show e2 - show (Div e1 e2) = show e1 ++ " / " ++ show e2 - show (Mod e1 e2) = show e1 ++ " % " ++ show e2 - show (Exp e1 e2) = show e1 ++ " ^ " ++ show e2 - show (Variable name) = name - show (Function name e) = name ++ "(" ++ show e ++ ")" |
