gpt4 book ai didi

haskell - mapMaybe 用于 Data.Map 中的键

转载 作者:行者123 更新时间:2023-12-02 02:37:48 25 4
gpt4 key购买 nike

我想将以下函数映射到 Map 的键上

f :: a -> Maybe b
并丢弃 Nothing键并保留 Just key ,但从 Just 中提取.就像 Map.mapMaybe , 但对于键
mapMaybeKeys :: (a -> Maybe b) -> Map a c -> Map b c
我在 Hoogle 中搜索了这种类型的签名,但没有找到任何东西。
我可以这样做:
mapMaybeKeys f
= Map.toList
. catMaybes
. fmap (fmap swap . traverse f . swap)
. Map.toList
或者:
mapMaybeKeys f
= Map.mapKeys fromJust
. Map.delete Nothing
. Map.mapKeys f
有没有更优雅的方式?

最佳答案

通过列表理解,

import Data.Map (Map)
import qualified Data.Map as M
import Control.Arrow (first)

mapMaybeKeys :: Ord b => (a -> Maybe b) -> Map a c -> Map b c
mapMaybeKeys f m =
M.fromList [ (b,a) | (Just b, a) <- map (first f) . M.toList $ m ]

关于haskell - mapMaybe 用于 Data.Map 中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63364264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com