No longer require largeword < 1.2 to compile on GHC 7.4.1
[rootstock.git] / Util / Monad.hs
blob9a6e0132273a573daf9f8ead314df8df4091b28c
1 module Util.Monad where
2 import Control.Monad (foldM)
3 import Data.Map (Map)
4 import qualified Data.Map as Map
6 infixl 1 >>=*
7 (>>=*) :: Monad m => a -> [a -> m a] -> m a
8 (>>=*) = foldM $ flip id
10 buildMap :: (Ord a, Monad m) => [a] -> (a -> m b) -> m (Map a b)
11 buildMap xs f = Map.empty >>=* (flip map xs $ \x m -> do
12 y <- f x
13 return $ Map.insert x y m)