我想将以下函数映射到 a 的键上 Map
f :: a -> Maybe b
Run Code Online (Sandbox Code Playgroud)
并丢弃Nothing
密钥并保留Just
密钥,但从Just
. 就像Map.mapMaybe
,但对于键
mapMaybeKeys :: (a -> Maybe b) -> Map a c -> Map b c
Run Code Online (Sandbox Code Playgroud)
我在 Hoogle 中搜索了这种类型的签名,但没有找到任何东西。
我可以这样做:
mapMaybeKeys f
= Map.toList
. catMaybes
. fmap (fmap swap . traverse f . swap)
. Map.toList
Run Code Online (Sandbox Code Playgroud)
或者:
mapMaybeKeys f
= Map.mapKeys fromJust
. Map.delete Nothing
. Map.mapKeys f
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方式?
归档时间: |
|
查看次数: |
114 次 |
最近记录: |