module Bio.Utils.Map 
  ( (!?!)
  ) where


import GHC.Stack       (HasCallStack)
import Data.Map.Strict (Map, 
                        (!?))
import Data.Maybe      (fromMaybe)

infix 9 !?!
(!?!) :: (HasCallStack, Ord k, Show k, Show a) => Map k a -> k -> a
!?! :: Map k a -> k -> a
(!?!) Map k a
m k
k = a -> Maybe a -> a
forall a. a -> Maybe a -> a
fromMaybe ([Char] -> a
forall a. HasCallStack => [Char] -> a
error ([Char] -> a) -> [Char] -> a
forall a b. (a -> b) -> a -> b
$ [Char]
"cobot-io: No key " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ k -> [Char]
forall a. Show a => a -> [Char]
show k
k [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
" in Map: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Map k a -> [Char]
forall a. Show a => a -> [Char]
show Map k a
m) (Maybe a -> a) -> Maybe a -> a
forall a b. (a -> b) -> a -> b
$ Map k a
m Map k a -> k -> Maybe a
forall k a. Ord k => Map k a -> k -> Maybe a
!? k
k