module YamlUnscrambler.Util.HashMap where import Data.HashMap.Strict import YamlUnscrambler.Prelude hiding (lookup) lookupFirst :: (Hashable k) => [k] -> HashMap k v -> Maybe (k, v) lookupFirst :: forall k v. Hashable k => [k] -> HashMap k v -> Maybe (k, v) lookupFirst [k] keys HashMap k v map = forall a. First a -> Maybe a getFirst (forall (t :: * -> *) m a. (Foldable t, Monoid m) => (a -> m) -> t a -> m foldMap (\k k -> forall a. Maybe a -> First a First (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap (k k,) (forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v lookup k k HashMap k v map))) [k] keys)