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)