module YamlUnscrambler.Util.HashMap where

import Data.HashMap.Strict
import YamlUnscrambler.Prelude hiding (lookup)

lookupFirst :: (Hashable k, Eq k) => [k] -> HashMap k v -> Maybe (k, v)
lookupFirst :: [k] -> HashMap k v -> Maybe (k, v)
lookupFirst [k]
keys HashMap k v
map =
  First (k, v) -> Maybe (k, v)
forall a. First a -> Maybe a
getFirst ((k -> First (k, v)) -> [k] -> First (k, v)
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap (\k
k -> Maybe (k, v) -> First (k, v)
forall a. Maybe a -> First a
First ((v -> (k, v)) -> Maybe v -> Maybe (k, v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (k
k,) (k -> HashMap k v -> Maybe v
forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v
lookup k
k HashMap k v
map))) [k]
keys)