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



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

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

如何使用列表中的条件?

您可以编写一个将 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

最新更新