1 module Util
.Monad
where
2 import Control
.Monad
(foldM)
4 import qualified Data
.Map
as Map
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
13 return $ Map
.insert x y m
)