33 lines
665 B
Haskell
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
|