Haskell类型错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Haskell类型错误相关的知识,希望对你有一定的参考价值。
您好我是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
答案
我使用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
以上是关于Haskell类型错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 haskell 读取和类型类 - 模棱两可的类型变量错误