有人将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
答案 0 :(得分:6)
Map
本身不是函子,对于某些键类型Map k
仅是k
,这就是mapM_
仅对您的值进行运算的原因。而是使用Map.toList
返回的键/值对的列表。
mapM_ (\(k, v) -> ...) (Map.toList db)