簡體   English   中英

如何從Haskell映射中刪除所有匹配其值而不是鍵的條件的元素?

[英]how to delete all elment from Haskell Map which match a condition on their value not key?

我想從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)]

感謝您的回復!

您具有所需的類型簽名,但是您不知道是否有這樣的功能。 解決該問題的方法是使用Hoogle ,這是Haskell API的搜索引擎,可讓您按類型搜索函數

例如,如果在Hoogle中輸入(a -> Bool) -> Map ka -> Map ka a- (a -> Bool) -> Map ka -> Map ka ka- (a -> Bool) -> Map ka -> Map ka ,則最上面的結果是Data.Map.filter ,在這種情況下正是您想要的結果。

它在泛化方面也相當出色,因此即使類型不完全匹配,您仍然可能會找到在前幾個匹配項中都能使用的內容。

因此,下次您要查找功能時,請嘗試將其完全搜索!

Data.Map.filter

將來,您可以使用Hoogle回答這些問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM