Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell大于或等于_Haskell_Recursion - Fatal编程技术网

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

我正在尝试将整数列表转换为字符列表,以类似于等级。以下是我在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 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