我想创建一个 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