如何从Haskell Map中删除所有符合其值而不是键的条件?

Fop*_*tin 0 haskell map

我想删除Data.Map匹配特定条件的所有元素.我们说foobar是这个函数,这是他需要的行为:

foobar :: (a -> Bool) -> Map k a -> Map k a
foobar (>= 20) $ fromList [("john",3),("sasha",8),("mary",33),("philip",20)] 
-- the expected result is  fromList [("john",3),("sasha",8)]
Run Code Online (Sandbox Code Playgroud)

谢谢你的回复!

ham*_*mar 9

您有一个所需的类型签名,但您不知道是否有这样的功能.该问题的解决方案是使用Hoogle,这是Haskell API的搜索引擎,可让您按类型搜索功能.

例如,如果您进入(a -> Bool) -> Map k a -> Map k aHoogle,则最重要的结果是Data.Map.filter,在这种情况下恰好是您想要的结果.

它在推广方面也相当不错,所以即使类型不完全匹配,你仍然可能会找到一些在前几个匹配中起作用的东西.

因此,下次您正在寻找功能时,请先尝试将其连接起来!


Dan*_*ner 6

Data.Map.filter

将来,您可以使用Hoogle来回答这些问题.