Blame Data/Aeson/Internal/Functions.hs
|
Packit |
9a2dfb |
-- |
|
|
Packit |
9a2dfb |
-- Module: Data.Aeson.Functions
|
|
Packit |
9a2dfb |
-- Copyright: (c) 2011-2016 Bryan O'Sullivan
|
|
Packit |
9a2dfb |
-- (c) 2011 MailRank, Inc.
|
|
Packit |
9a2dfb |
-- License: BSD3
|
|
Packit |
9a2dfb |
-- Maintainer: Bryan O'Sullivan <bos@serpentine.com>
|
|
Packit |
9a2dfb |
-- Stability: experimental
|
|
Packit |
9a2dfb |
-- Portability: portable
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
module Data.Aeson.Internal.Functions
|
|
Packit |
9a2dfb |
(
|
|
Packit |
9a2dfb |
mapHashKeyVal
|
|
Packit |
9a2dfb |
, mapKeyVal
|
|
Packit |
9a2dfb |
, mapKey
|
|
Packit |
9a2dfb |
) where
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
import Prelude ()
|
|
Packit |
9a2dfb |
import Prelude.Compat
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
import Data.Hashable (Hashable)
|
|
Packit |
9a2dfb |
import qualified Data.HashMap.Strict as H
|
|
Packit |
9a2dfb |
import qualified Data.Map as M
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
-- | Transform a 'M.Map' into a 'H.HashMap' while transforming the keys.
|
|
Packit |
9a2dfb |
mapHashKeyVal :: (Eq k2, Hashable k2) => (k1 -> k2) -> (v1 -> v2)
|
|
Packit |
9a2dfb |
-> M.Map k1 v1 -> H.HashMap k2 v2
|
|
Packit |
9a2dfb |
mapHashKeyVal fk kv = M.foldrWithKey (\k v -> H.insert (fk k) (kv v)) H.empty
|
|
Packit |
9a2dfb |
{-# INLINE mapHashKeyVal #-}
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
-- | Transform the keys and values of a 'H.HashMap'.
|
|
Packit |
9a2dfb |
mapKeyVal :: (Eq k2, Hashable k2) => (k1 -> k2) -> (v1 -> v2)
|
|
Packit |
9a2dfb |
-> H.HashMap k1 v1 -> H.HashMap k2 v2
|
|
Packit |
9a2dfb |
mapKeyVal fk kv = H.foldrWithKey (\k v -> H.insert (fk k) (kv v)) H.empty
|
|
Packit |
9a2dfb |
{-# INLINE mapKeyVal #-}
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
-- | Transform the keys of a 'H.HashMap'.
|
|
Packit |
9a2dfb |
mapKey :: (Eq k2, Hashable k2) => (k1 -> k2) -> H.HashMap k1 v -> H.HashMap k2 v
|
|
Packit |
9a2dfb |
mapKey fk = mapKeyVal fk id
|
|
Packit |
9a2dfb |
{-# INLINE mapKey #-}
|