Haskell Guard方法打印成绩
Haskell Guard method to print the grade
我是 Haskell 编程新手,我需要使用 Guard 根据标记打印成绩。请找到以下代码。
我遇到编译器错误,如能提供任何帮助,我们将不胜感激。
Couldn't match expected type ‘Integer -> String’
with actual type ‘[Char]’
• In the expression: "MediumPass"
In an equation for ‘printMarks’:
printMarks mark
| mark >= 50 && mark <= 59 = "MediumPass"
| mark >= 60 && mark <= 69 = "High Pass"
| mark >= 80 && mark <= 100 = "Distinction"
| otherwise = error "invalid mark"
代码:
printMarks :: Integer -> Integer -> String
printMarks mark | mark >= 50 && mark <= 59 = "MediumPass"
| mark >= 60 && mark <= 69 = "High Pass"
| mark >= 80 && mark <= 100 = "Distinction"
| otherwise = error "invalid mark"
main = do
putStrLn "Printing Grade"
print(printMarks 51)
printMarks
的类型应该是 Integer -> String
而不是 Integer -> Integer -> String
因为 printMarks
需要一个 Integer
并产生一个 String
。
printMarks :: Integer -> String
printMarks mark
| mark >= 50, mark <= 59 = "MediumPass"
| mark >= 60, mark <= 69 = "High Pass"
| mark >= 80, mark <= 100 = "Distinction"
| otherwise = error "invalid mark"
main = do
putStrLn "Printing Grade"
print(printMarks 51)
输出
tarptaeya@Anmols-MBP Temp % runghc foo.hs
Printing Grade
"MediumPass"
在Haskell中f :: a -> b -> c
意味着如果你用a
类型的对象调用f
,那么它将return一个return类型的函数=21=].
我是 Haskell 编程新手,我需要使用 Guard 根据标记打印成绩。请找到以下代码。
我遇到编译器错误,如能提供任何帮助,我们将不胜感激。
Couldn't match expected type ‘Integer -> String’
with actual type ‘[Char]’
• In the expression: "MediumPass"
In an equation for ‘printMarks’:
printMarks mark
| mark >= 50 && mark <= 59 = "MediumPass"
| mark >= 60 && mark <= 69 = "High Pass"
| mark >= 80 && mark <= 100 = "Distinction"
| otherwise = error "invalid mark"
代码:
printMarks :: Integer -> Integer -> String
printMarks mark | mark >= 50 && mark <= 59 = "MediumPass"
| mark >= 60 && mark <= 69 = "High Pass"
| mark >= 80 && mark <= 100 = "Distinction"
| otherwise = error "invalid mark"
main = do
putStrLn "Printing Grade"
print(printMarks 51)
printMarks
的类型应该是 Integer -> String
而不是 Integer -> Integer -> String
因为 printMarks
需要一个 Integer
并产生一个 String
。
printMarks :: Integer -> String
printMarks mark
| mark >= 50, mark <= 59 = "MediumPass"
| mark >= 60, mark <= 69 = "High Pass"
| mark >= 80, mark <= 100 = "Distinction"
| otherwise = error "invalid mark"
main = do
putStrLn "Printing Grade"
print(printMarks 51)
输出
tarptaeya@Anmols-MBP Temp % runghc foo.hs
Printing Grade
"MediumPass"
在Haskell中f :: a -> b -> c
意味着如果你用a
类型的对象调用f
,那么它将return一个return类型的函数=21=].