如何将Map ByteString ByteString转换为Map String String并打印

时间:2019-06-17 15:05:12

标签: haskell type-conversion maps

有人将ByteString:ByteString的地图转换为String:String的地图吗?我尝试了以下方法:

import qualified Data.Map as Map
import Data.ByteString.UTF8 as BSU

type Key   = ByteString
type Valye = ByteString
type DB    = Map.Map Key Valye

printMap :: IO ()
printMap = do
    -- db exists to this point and is of type DB
    mapM_ putStrLn $ Map.map BSU.toString db

这将导致可打印的值,但仅打印我的值而不打印我的键... 我知道也有Map.mapKeys会给我密钥,但是我如何同时获得它们并打印出来呢?

k0: v0
k1: v1
k2: v2

1 个答案:

答案 0 :(得分:6)

Map本身不是函子,对于某些键类型Map k仅是k,这就是mapM_仅对您的值进行运算的原因。而是使用Map.toList返回的键/值对的列表。

mapM_ (\(k, v) -> ...) (Map.toList db)