我想知道创建一个Haskell函数来获取浮点数列表并返回一个字符列表,这些字符表示基于原始分数的字母等级。 我可以在没有列表的情况下完成此要求:
convertRawsToLetters :: (RealFloat score) => score -> Char
convertRawsToLetters score
| score > 90 = 'A'
| score <= 90 && score > 80 = 'B'
如何在列表中使用条件?
答案 0 :(得分:3)
您可以编写一个将ONE浮点数转换为Char的函数,就像您在此处所做的那样:
convertRawsToLetters :: (Num a, Ord a) => a -> Char
convertRawsToLetters s | s > 90 = 'A'
| s > 80 = 'B'
| s > 70 = 'C'
| otherwise = 'F'
(请注意,我不必在这里运行两个不等式,因为按顺序对守卫进行评估)
然后将其映射到浮动列表上。 map
的类型为:
map :: (a -> b) -> [a] -> [b]
所以它的第一个参数是来自a -> b
(Float -> Char
的函数,在这种情况下),它的第二个参数是a
s(Float
s)的列表,它返回b
s(Char
s)的列表。
listOfChars :: [Char]
listOfChars = map convertRawsToLetters listOfFloats