module Bookhound.Utils.Map where

import Data.Map (Map, elems, keys)


showMap :: String -> (String -> String) -> (a -> String) -> Map String a -> [String]
showMap :: forall a.
String
-> (String -> String) -> (a -> String) -> Map String a -> [String]
showMap String
sep String -> String
showKey a -> String
showValue Map String a
mapping =
  (\(String
k, a
v) -> String -> String
showKey String
k forall a. Semigroup a => a -> a -> a
<> String
sep forall a. Semigroup a => a -> a -> a
<> a -> String
showValue a
v) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, a)]
tuples
  where
    tuples :: [(String, a)]
tuples = forall a b. [a] -> [b] -> [(a, b)]
zip (forall k a. Map k a -> [k]
keys Map String a
mapping) (forall k a. Map k a -> [a]
elems Map String a
mapping)