Haskell映射和过滤器



这是我的问题:我有两个列表,如下所示:[(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 conditioncondition是由两个Float构建而成的(您已经拥有了)。CCD_ 16可以实现为CCD_。然后将这些功能与结合起来

result = concatMap (`stringsFromInteger` stringList) (integerFromRange mini maxi floatList)

使用一组Integers而不是列表将更有效,因为Set中的成员资格测试比列表中的更快。

最新更新