24 lines
508 B
Haskell
24 lines
508 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)
|
|
|
|
lookupDefault :: Ord k => a -> k -> Map k a -> a
|
|
lookupDefault d k m = fromMaybe d (M.lookup k m)
|
|
|
|
infixl \\
|
|
(\\) :: Ord a => Set a -> Set a -> Set a
|
|
(\\) = S.difference
|
|
|
|
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
|
|
(.:) = (.) . (.)
|