Haskell大于或等于
我正在尝试将整数列表转换为字符列表,以类似于等级。以下是我在Haskell中的代码:Haskell大于或等于,haskell,recursion,Haskell,Recursion,我正在尝试将整数列表转换为字符列表,以类似于等级。以下是我在Haskell中的代码: grade :: [int] -> [char] grade array = if 90 <= head array then ['A'] ++ grade(tail array) else if 80 <= head array then ['B'] ++ grade(tail array) else if 70 <= head array t
grade :: [int] -> [char]
grade array = if 90 <= head array then ['A'] ++ grade(tail array)
else if 80 <= head array then ['B'] ++ grade(tail array)
else if 70 <= head array then ['C'] ++ grade(tail array)
else if 60 <= head array then ['D'] ++ grade(tail array)
else if 60 > head array then ['F'] ++ grade(tail array)
else [] array
我不知道“[t0]”是什么意思
提前谢谢
我将代码更改为:
grade :: [Int] -> [Char]
grade array = if 90 <= head array then ['A'] ++ grade(tail array)
else if 80 <= head array then ['B'] ++ grade(tail array)
else if 70 <= head array then ['C'] ++ grade(tail array)
else if 60 <= head array then ['D'] ++ grade(tail array)
else if 60 > head array then ['F'] ++ grade(tail array)
else [] = array
grade::[Int]->[Char]
grade array=if 90实现您想要的效果的更好方法是使用模式匹配:
grade [] = []
grade array = if 90 <= head array then ['A'] ++ grade(tail array)
else if 80 <= head array then ['B'] ++ grade(tail array)
else if 70 <= head array then ['C'] ++ grade(tail array)
else if 60 <= head array then ['D'] ++ grade(tail array)
else ['F'] ++ grade(tail array)
编辑:要使haskellize更大,您可以使用guards:
grade [] = []
grade (x:xs)
| 90 <= x = ['A'] ++ grade xs
| 80 <= x = ['B'] ++ grade xs
| 70 <= x = ['C'] ++ grade xs
| 60 <= x = ['D'] ++ grade xs
| otherwise = ['F'] ++ grade xs
grade[]=[]
等级(x:xs)
|90实现您想要的目标的更好方法是使用模式匹配:
grade [] = []
grade array = if 90 <= head array then ['A'] ++ grade(tail array)
else if 80 <= head array then ['B'] ++ grade(tail array)
else if 70 <= head array then ['C'] ++ grade(tail array)
else if 60 <= head array then ['D'] ++ grade(tail array)
else ['F'] ++ grade(tail array)
编辑:要使haskellize更大,您可以使用guards:
grade [] = []
grade (x:xs)
| 90 <= x = ['A'] ++ grade xs
| 80 <= x = ['B'] ++ grade xs
| 70 <= x = ['C'] ++ grade xs
| 60 <= x = ['D'] ++ grade xs
| otherwise = ['F'] ++ grade xs
grade[]=[]
等级(x:xs)
|90你的意思是else[]++array
(与else array
相同)[]数组
被解析为函数应用程序,[]
不是函数。你的意思是Int
和Char
而不是Int
和Char
吗?你能用文字解释一下最后一行应该做什么吗?当列表尾部没有更多值时,我希望递归停止,所以我尝试使递归中的最后一个列表等于nothing@Stephanie:你知道地图
?如果是这样,请改为编写gradeSingle::Int->Char
。您的意思是else[]++array
(与else array
相同)[]数组
被解析为函数应用程序,[]
不是函数。你的意思是Int
和Char
而不是Int
和Char
吗?你能用文字解释一下最后一行应该做什么吗?当列表尾部没有更多值时,我希望递归停止,所以我尝试使递归中的最后一个列表等于nothing@Stephanie:你知道地图
?如果这样做,请改为编写gradeSingle::Int->Char
。