Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- data Expr = Val Int
- | Add Expr Expr
- | Sub Expr Expr
- | Mul Expr Expr
- | Div Expr Expr
- | If BExpr Expr Expr
- data SecondExpr = Lit Bool
- | Or SecondExpr SecondExpr
- | EqualTo Expr Expr
- | LessThan Expr Expr
- eval :: SecondExpr -> Bool
- eval (Lit n) = n
- eval (Or e1 e2)
- | True && True = True
- | True && False = True
- | False && True = True
- | otherwise = False
- eval (EqualTo e1 e2)
- | (Add e1 e2) == (Add e1 e2) = True
- | (Sub e1 e2) == (Sub e1 e2) = True
- | (Mul e1 e2) == (Mul e1 e2) = True
- | (Div e1 e2) == (Div e1 e2) = True
- | otherwise = False
- eval (LessThan e1 e2)
- | (Add e1 e2) == (Add e1 e2) = True
- | (Sub e1 e2) == (Sub e1 e2) = True
- | (Mul e1 e2) == (Mul e1 e2) = True
- | (Div e1 e2) == (Div e1 e2) = True
- | otherwise = False
- * No instance for (Eq Expr) arising from a use of `=='
- * In the expression: (Add e1 e2) == (Add e1 e2)
- In a stmt of a pattern guard for
- an equation for `eval':
- (Add e1 e2) == (Add e1 e2)
- In an equation for `eval':
- eval (EqualTo e1 e2)
- | (Add e1 e2) == (Add e1 e2) = True
- | (Sub e1 e2) == (Sub e1 e2) = True
- | (Mul e1 e2) == (Mul e1 e2) = True
- | (Div e1 e2) == (Div e1 e2) = True
- | otherwise = False
- |
- 24 | | (Add e1 e2) == (Add e1 e2) = True
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement