module Misc where import Data.Map (Map) import Data.Set (Set) import qualified Data.Set as S import qualified Data.Map as M import Data.Maybe (fromMaybe) import Prelude hiding (map) lookupDefault :: Ord k => a -> k -> Map k a -> a lookupDefault d k m = fromMaybe d (M.lookup k m) infixl 3 \\ (\\) :: Ord a => Set a -> Set a -> Set a (\\) = S.difference infixl 3 \- (\-) :: Ord a => Set a -> a -> Set a (\-) = flip S.delete infix 5 <~> (<~>) :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) (<~>) = traverse infixr 9 .: (.:) :: (c -> d) -> (a -> b -> c) -> a -> b -> d (.:) = (.) . (.) map :: Functor f => (a -> b) -> f a -> f b map = fmap