module Utils.Map where

import Data.Map (Map, keys, elems)


showMap :: String -> (String -> String) -> (a -> String) -> Map String a -> [String]
showMap :: 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 String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
sep String -> String -> String
forall a. [a] -> [a] -> [a]
++ a -> String
showValue a
v) ((String, a) -> String) -> [(String, a)] -> [String]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, a)]
tuples where
  tuples :: [(String, a)]
tuples = [String] -> [a] -> [(String, a)]
forall a b. [a] -> [b] -> [(a, b)]
zip (Map String a -> [String]
forall k a. Map k a -> [k]
keys Map String a
mapping) (Map String a -> [a]
forall k a. Map k a -> [a]
elems Map String a
mapping)