以下是我的问题:我有两个列表如下:[(Float, Integer)]
和[(String, Integer)]
。现在我需要定义一个函数,它接受这两个列表和两个Float
值并返回Strings
列表。两个Float值对应于给定的范围(min和max)。我必须过滤第一个列表,因此它只包含在最小和最大范围内的元素。然后,我需要使用过滤后的列表并获取Integer
值,将其与第二个列表中的Integer
值匹配,并返回匹配的所有String
值。
我已经定义了一个函数用作过滤条件,它接受(Float,Integer)
并检查Float
值以查看它是否在给定范围内。
我已经定义了一个函数来获取(String,Integer)
元素并返回String
。
我只是将所有事情联系在一起,或者我错过了一些东西!
答案 0 :(得分:3)
您需要(例如,有不同的方式)
integersFromRange :: Float -> Float -> [(Float,Integer)] -> [Integer]
stringsFromInteger :: Integer -> [(String,Integer)] -> [String]
integersFromRange
基本上是map snd . filter condition
,condition
来自两个Float
(你有)。 stringsFromInteger
可以map fst . filter condition
实施。然后将功能与
result = concatMap (`stringsFromInteger` stringList) (integerFromRange mini maxi floatList)
使用一组Integer
而不是列表会更有效率,因为Set
中的成员资格测试比列表中的更快。