我在Haskell中的Mod運算符遇到問題它基於我的推理錯誤類型。 Mod在eval的底部。我是Haskell的新手,正在用expr爲課堂製作AST。這是我迄今爲止的代碼。我相信它是一個簡單的修復,但似乎無法得到它。在抽象語法樹中使用Mod Haskell
data Expr = Add Expr Expr
| Sub Expr Expr
| Mult Expr Expr
| EqualTo Expr Expr
| GreaterThan Expr Expr
| LessThan Expr Expr
| Mod Expr
| NotEqual Expr Expr
| Const Integer
| VarName String
| TrueE
| FalseE
deriving (Show,Eq)
eval :: Expr -> [(String, Integer)] -> Integer
eval (Add e1 e2) env = eval e1 env + eval e2 env
eval (Sub e1 e2) env = eval e1 env - eval e2 env
eval (Mult e1 e2) env = eval e1 env * eval e2 env
eval (EqualTo e1 e2) env | eval e1 env == eval e2 env = 1
| otherwise = 0
eval (GreaterThan e1 e2) env | eval e1 env > eval e2 env = 1
| otherwise = 0
eval (LessThan e1 e2) env | eval e1 env < eval e2 env = 1
| otherwise = 0
eval (NotEqual e1 e2) env | eval e1 env /= eval e2 env = 1
| otherwise = 0
eval (Mod e1) env = mod eval e1 env
@AndrewC,不需要 – luqui