Haskell - 获取一个浮点列表并返回一个字符列表

时间:2017-11-13 02:50:38

标签: haskell

我想知道创建一个Haskell函数来获取浮点数列表并返回一个字符列表,这些字符表示基于原始分数的字母等级。 我可以在没有列表的情况下完成此要求:

 convertRawsToLetters :: (RealFloat score) => score -> Char
 convertRawsToLetters score
    | score > 90 = 'A'
    | score <= 90 && score > 80 = 'B'

如何在列表中使用条件?

1 个答案:

答案 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 -> bFloat -> Char的函数,在这种情况下),它的第二个参数是a s(Float s)的列表,它返回b s(Char s)的列表。

listOfChars :: [Char]
listOfChars = map convertRawsToLetters listOfFloats