Haskell의 Mod 연산자에 문제가있다. 내가 가진 것을 기반으로 잘못된 유형을 추론한다. Mod는 eval의 맨 아래에 있습니다. 나는 하스켈을 처음 사용하고 수업을 위해 expr을 사용하여 대서양 표준시를 만들고있다. 지금까지 제가 가지고있는 코드는 다음과 같습니다. 나는 그것의 간단한 수정 그러나 위선적 인 말투가 그것을 얻는 것처럼 보인다고 확신한다.추상 구문 트리에서 Mod 사용하기
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