hm/src/Misc.hs

33 lines
665 B
Haskell

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