您好我是Haskel的新手,我正在尝试为我的项目编写一些代码,但我不断收到以下错误:
ERROR file:.\Lab1.hs:12 - Type error in application
*** Expression : c c
*** Term : c
*** Type : Int
*** Does not match : a -> b
我的代码看起来像这样。我做错了什么?
grade :: Int->Int->Int
grade a b
|((a < 0) || (a > 100) || (b < 0) || (b > 0)) = -1
|(c > 47) && (a <= 47) = 47
|(c > 47) && (a > 47) && (c <50) = 50
|otherwise = c
c where
c = ((8 * a) `div` 10) + b
答案 0 :(得分:1)
我尝试使用ghci编写代码,并在我正常工作之前删除了c。
grade :: Int->Int->Int
grade a b
|((a < 0) || (a > 100) || (b < 0) || (b > 0)) = -1
|(c > 47) && (a <= 47) = 47
|(c > 47) && (a > 47) && (c <50) = 50
|otherwise = c
where
c = ((8 * a) `div` 10) + b
另外如果你打算只进入第一种情况,如果b不为零,我会建议你写第一个这样的条件
|((a < 0) || (a > 100) || (not (b==0))) = -1