这是我的问题:我有两个列表,如下所示:[(Float, Integer)]
和[(String, Integer)]
。现在我需要定义一个函数,它接受这两个Lists和两个Float
值,并返回一个Strings
列表。两个Float值对应于给定的范围(最小值和最大值)。我必须过滤第一个列表,这样它只包含最小和最大范围内的元素。然后,我需要使用过滤后的列表,取它的Integer
值,将它们与第二个列表中的Integer
值匹配,并返回所有匹配的String
值。
我已经定义了一个函数作为过滤条件,它接受(Float,Integer)
并检查Float
的值,看看它是否在给定的范围内。
我定义了一个函数来获取(String,Integer)
元素并返回String
。
我只是在把所有东西联系在一起时遇到了问题,或者可能我错过了什么!
您需要(例如,有不同的方法)
integersFromRange :: Float -> Float -> [(Float,Integer)] -> [Integer]
stringsFromInteger :: Integer -> [(String,Integer)] -> [String]
integersFromRange
基本上是map snd . filter condition
,condition
是由两个Float
构建而成的(您已经拥有了)。CCD_ 16可以实现为CCD_。然后将这些功能与结合起来
result = concatMap (`stringsFromInteger` stringList) (integerFromRange mini maxi floatList)
使用一组Integer
s而不是列表将更有效,因为Set
中的成员资格测试比列表中的更快。