Haskel类型错误

时间:2017-03-25 19:15:38

标签: haskell types

您好我是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

1 个答案:

答案 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