X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Futils%2FDigraph.lhs;h=a341bdecbc1fc80fcd8322b495e90a572244c6e6;hp=eadabdae7d1d53e8636735bed97268760e13bf6f;hb=d0faaa6fa0cecd23c5670fd199e9206275313666;hpb=f9cde00b2e1a078e433af81bf9021a96cc613976 diff --git a/compiler/utils/Digraph.lhs b/compiler/utils/Digraph.lhs index eadabda..a341bde 100644 --- a/compiler/utils/Digraph.lhs +++ b/compiler/utils/Digraph.lhs @@ -40,6 +40,7 @@ module Digraph( import Util ( sortLe ) import Outputable import Maybes ( expectJust ) +import MonadUtils ( allM ) -- Extensions import Control.Monad ( filterM, liftM, liftM2 ) @@ -49,12 +50,7 @@ import Control.Monad.ST import Data.Maybe import Data.Array import Data.List ( (\\) ) - -#if !defined(__GLASGOW_HASKELL__) || __GLASGOW_HASKELL__ > 604 import Data.Array.ST -#else -import Data.Array.ST hiding ( indices, bounds ) -#endif \end{code} %************************************************************************ @@ -75,7 +71,7 @@ Note [Nodes, keys, vertices] \begin{code} data Graph node = Graph { - gr_int_graph :: IntGraph, + gr_int_graph :: IntGraph, gr_vertex_to_node :: Vertex -> node, gr_node_to_vertex :: node -> Maybe Vertex } @@ -588,8 +584,4 @@ vertexGroupsS provided g to_provide vertexReady :: Set s -> IntGraph -> Vertex -> ST s Bool vertexReady provided g v = liftM2 (&&) (liftM not $ provided `contains` v) (allM (provided `contains`) (g!v)) - -allM :: Monad m => (a -> m Bool) -> [a] -> m Bool -allM _ [] = return True -allM f (b:bs) = (f b) >>= (\bv -> if bv then allM f bs else return False) \end{code}