Как преобразовать Map ByteString ByteString в Map String String и распечатать его - PullRequest
0 голосов
/ 17 июня 2019

Как бы кто-нибудь преобразовал Карту 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 Ответ

6 голосов
/ 17 июня 2019

Map сам по себе не является функтором, только Map k для некоторого типа ключа k, поэтому mapM_ работает только с вашими значениями. Вместо этого работайте со списком пар ключ / значение, возвращаемым Map.toList.

mapM_ (\(k, v) -> ...) (Map.toList db)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...