--================================================================================ Typechecked: {- nonrec -} {- nonrec -} Succeeded{-r4G,x-}{i} = _/\_ a{-r8v-} b{-r8w-} -> \ tpl_B1 -> Succeeded{-r4G,x-}{i} {_@_ a{-r8v-} _@_ b{-r8w-} tpl_B1} Failed{-r4F,x-}{i} = _/\_ a{-r8v-} b{-r8w-} -> \ tpl_B1 -> Failed{-r4F,x-}{i} {_@_ a{-r8v-} _@_ b{-r8w-} tpl_B1} {- nonrec -} MkDigraph{-r8L,x-}{i} = _/\_ vertex{-r8G-} -> \ tpl_B1 -> MkDigraph{-r8L,x-}{i} {_@_ vertex{-r8G-} tpl_B1} {- nonrec -} {- rec -} AbsBinds [a{-a1lz-}, b{-a1lA-}] [] [([a{-a1lz-}, b{-a1lA-}], $d1{-r1lE,x-}, d.Eval_a1kX)] d.Eval_a1kX = ({-dict-} [] []) {- rec -} AbsBinds [vertex{-a1lB-}] [] [([vertex{-a1lB-}], $d2{-r1lS,x-}, d.Eval_a1l3)] d.Eval_a1l3 = ({-dict-} [] []) {- nonrec -} d.Monad_a1l5 = PrelBase.$d24{-rj0,p-} >>=_a1lQ = PrelBase.>>={-811,p-} PrelBase.[]{-3j,p-} d.Monad_a1l5 d.Monad_a1l8 = d.Monad_a1l5 return_a1lP = PrelBase.return{-816,p-} PrelBase.[]{-3j,p-} d.Monad_a1l8 d.MonadZero_a1la = PrelBase.$d23{-riZ,p-} zero_a1lO = PrelBase.zero{-810,p-} PrelBase.[]{-3j,p-} d.MonadZero_a1la d.Functor_a1ld = PrelBase.$d25{-rj1,p-} map_a1lN = PrelBase.map{-rkx,p-} PrelBase.[]{-3j,p-} d.Functor_a1ld d.MonadPlus_a1lg = PrelBase.$d22{-riY,p-} ++_a1lM = PrelBase.++{-rnk,p-} PrelBase.[]{-3j,p-} d.MonadPlus_a1lg >>=_a1lL = >>=_a1lQ return_a1lK = return_a1lP >>=_a1lJ = >>=_a1lQ return_a1lI = return_a1lP >>=_a1lH = >>=_a1lQ return_a1lG = return_a1lP zero_a1lF = zero_a1lO {- nonrec -} AbsBinds [vertex{-a1ba-}] [d.Eq_a1bl] [([vertex{-a1ba-}], isRecursiveCycle{-r6x,x-}, isRecursiveCycle_a1b5)] d.Eq_a1bp = d.Eq_a1bl d.Eq_a1bq = d.Eq_a1bl d.Eq_a1bn = PrelTup.$d9{-rEY,p-} [vertex{-a1ba-}, vertex{-a1ba-}] [d.Eq_a1bp, d.Eq_a1bq] elem_a1lT = PrelList.elem{-rF6,p-} (vertex{-a1ba-}, vertex{-a1ba-}) d.Eq_a1bn isRecursiveCycle_a1b5 [vertex_r8n] edges_r8p = (vertex_r8n, vertex_r8n) elem_a1lT edges_r8p isRecursiveCycle_a1b5 cycle_r8r edges_r8t = PrelBase.True{-5E,p-}{i} {- nonrec -} {- nonrec -} AbsBinds [vertex{-a1bC-}, name{-a1bD-}, code{-a1bE-}] [d.Eq_a1cs, d.Ord_a1ct] [([name{-a1bD-}, vertex{-a1bC-}, code{-a1bE-}], lookupVertex{-r6w,x-}, lookupVertex_a1bz)] d.Eq_a1cv = d.Eq_a1cs ==_a1lU = PrelBase.=={-8Y,p-} vertex{-a1bC-} d.Eq_a1cv lookupVertex_a1bz flat_info_r8e vertex_r8g = PrelList.head{-rFm,p-} code{-a1bE-} code_list_r8i where {- nonrec -} AbsBinds [] [] [([], code_list_r8i, code_list_a1bI)] code_list_a1bI = [ code_r8l | (vertex'_r8k, _, _, code_r8l) <- flat_info_r8e, vertex_r8g ==_a1lU vertex'_r8k ] {- nonrec -} {- nonrec -} {- nonrec -} AbsBinds [vertex{-a1cO-}, name{-a1cR-}, code{-a1cS-}] [d.Eq_a1ei, d.Ord_a1ej] [([name{-a1cR-}, code{-a1cS-}, vertex{-a1cO-}], mkEdges{-r6v,x-}, mkEdges_a1cL)] d.Ord_a1ek = d.Ord_a1ej d.MonadZero_a1el = PrelBase.$d23{-riZ,p-} mkEdges_a1cL vertices_r7U flat_info_r7W = [ (source_vertex_r87, target_vertex_r8c) | (source_vertex_r87, _, used_names_r88, _) <- flat_info_r7W, target_name_r8a <- Set.setToList{-rhd,p-} name{-a1cR-} used_names_r88, target_vertex_r8c <- vertices_defining_a1lV target_name_r8a flat_info_r7W ] where {- nonrec -} AbsBinds [t{-a1d5-}, t{-a1da-}, t{-a1dd-}, a{-a1dg-}, a{-a1di-}] [d.Ord_a1du, d.MonadZero_a1dA] [([t{-a1d5-}, t{-a1da-}, t{-a1dd-}, a{-a1dg-}, a{-a1di-}], vertices_defining_r7Y, vertices_defining_a1cU)] d.Monad_a1dw = PrelBase.scsel_MonadZeroPrelBaseMonad{-a1m0,p-} a{-a1dg-} d.MonadZero_a1dA elementOf_a1lZ = Set.elementOf{-rh5,p-} a{-a1di-} d.Ord_a1du >>=_a1lY = PrelBase.>>={-811,p-} a{-a1dg-} d.Monad_a1dw d.Monad_a1dy = d.Monad_a1dw return_a1lX = PrelBase.return{-816,p-} a{-a1dg-} d.Monad_a1dy zero_a1lW = PrelBase.zero{-810,p-} a{-a1dg-} d.MonadZero_a1dA vertices_defining_a1cU name_r80 flat_info_r82 = [ vertex_r84 | (vertex_r84, names_defined_r85, _, _) <- flat_info_r82, name_r80 elementOf_a1lZ names_defined_r85 ] {- nonrec -} vertices_defining_a1lV = vertices_defining_r7Y [vertex{-a1cO-}, Set.Set{-rh2,p-} name{-a1cR-}, code{-a1cS-}, PrelBase.[]{-3j,p-}, name{-a1cR-}] [d.Ord_a1ek, d.MonadZero_a1el] {- nonrec -} {- nonrec -} AbsBinds [vertex{-a1eC-}, name{-a1eD-}, code{-a1eE-}] [] [([name{-a1eD-}, code{-a1eE-}, vertex{-a1eC-}], mkVertices{-r6u,x-}, mkVertices_a1ez)] mkVertices_a1ez info_r7Q = [ vertex_r7S | (vertex_r7S, _, _, _) <- info_r7Q ] {- nonrec -} {- nonrec -} AbsBinds [vertex{-a1ff-}] [d.Eq_a1fs] [([vertex{-a1ff-}], isCyclic{-r6s,x-}, isCyclic_a1fc)] d.Eq_a1fw = d.Eq_a1fs d.Eq_a1fx = d.Eq_a1fs d.Eq_a1fu = PrelTup.$d9{-rEY,p-} [vertex{-a1ff-}, vertex{-a1ff-}] [d.Eq_a1fw, d.Eq_a1fx] elem_a1m1 = PrelList.elem{-rF6,p-} (vertex{-a1ff-}, vertex{-a1ff-}) d.Eq_a1fu isCyclic_a1fc edges_r7w [v_r7y] = (v_r7y, v_r7y) elem_a1m1 edges_r7w isCyclic_a1fc edges_r7A vs_r7C = PrelBase.True{-5E,p-}{i} {- nonrec -} {- rec -} AbsBinds [t{-a1gi-}] [d.Eq_a1gA] [([t{-a1gi-}], dfs{-r6y,x-}, dfs_a1fz)] elem_a1m2 = PrelList.elem{-rF6,p-} t{-a1gi-} d.Eq_a1gA dfs_a1fz r_r7f (vs_r7h, ns_r7i) PrelBase.[]{-5i,p-}{i} = (vs_r7h, ns_r7i) dfs_a1fz r_r7l (vs_r7n, ns_r7o) (x_r7q PrelBase.:{-55,p-}{i} xs_r7r) | [x_r7q elem_a1m2 vs_r7n] = dfs_a1fz r_r7l (vs_r7n, ns_r7o) xs_r7r | [PrelBase.otherwise{-818,p-}] = dfs_a1fz r_r7l (vs'_r7t, ++_a1lM t{-a1gi-} (PrelBase.:{-55,p-}{i} t{-a1gi-} x_r7q ns'_r7u) ns_r7o) xs_r7r where {- nonrec -} AbsBinds [] [] [([], vs'_r7t, vs'_a1g4), ([], ns'_r7u, ns'_a1g5)] (vs'_a1g4, ns'_a1g5) = dfs_a1fz r_r7l (PrelBase.:{-55,p-}{i} t{-a1gi-} x_r7q vs_r7n, PrelBase.[]{-5i,p-}{i} t{-a1gi-}) r_r7l x_r7q {- nonrec -} {- nonrec -} {- nonrec -} AbsBinds [vertex{-a1gK-}] [d.Eq_a1ju] [([vertex{-a1gK-}], stronglyConnComp{-r6r,x-}, stronglyConnComp_a1gH)] d.Eq_a1jv = d.Eq_a1ju d.Eq_a1jq = d.Eq_a1ju d.Eq_a1jx = d.Eq_a1ju dfs_a1m3 = dfs{-r6y,x-} vertex{-a1gK-} d.Eq_a1jx d.Eq_a1jr = d.Eq_a1ju stronglyConnComp_a1gH es_r6B vs_r6D = PrelTup.snd{-rF4,p-} [[vertex{-a1gK-}], [[vertex{-a1gK-}]]] span_tree_a1m4 new_range_a1m6 reversed_edges_r6F (PrelBase.[]{-5i,p-}{i} vertex{-a1gK-}, PrelBase.[]{-5i,p-}{i} [vertex{-a1gK-}]) PrelTup.snd{-rF4,p-} [[vertex{-a1gK-}], [vertex{-a1gK-}]] dfs_a1m3 new_range_a1m5 es_r6B (PrelBase.[]{-5i,p-}{i} vertex{-a1gK-}, PrelBase.[]{-5i,p-}{i} vertex{-a1gK-}) vs_r6D where {- rec -} AbsBinds [t{-a1h2-}] [d.Eq_a1hJ] [([t{-a1h2-}], span_tree_r6I, span_tree_a1gO)] elem_a1m8 = PrelList.elem{-rF6,p-} t{-a1h2-} d.Eq_a1hJ d.Eq_a1hL = d.Eq_a1hJ dfs_a1m7 = dfs{-r6y,x-} t{-a1h2-} d.Eq_a1hL span_tree_a1gO r_r6Y (vs_r70, ns_r71) PrelBase.[]{-5i,p-}{i} = (vs_r70, ns_r71) span_tree_a1gO r_r74 (vs_r76, ns_r77) (x_r79 PrelBase.:{-55,p-}{i} xs_r7a) | [x_r79 elem_a1m8 vs_r76] = span_tree_a1gO r_r74 (vs_r76, ns_r77) xs_r7a | [PrelBase.otherwise{-818,p-}] = span_tree_a1gO r_r74 (vs'_r7c, PrelBase.:{-55,p-}{i} [t{-a1h2-}] (PrelBase.:{-55,p-}{i} t{-a1h2-} x_r79 ns'_r7d) ns_r77) xs_r7a where {- nonrec -} AbsBinds [] [] [([], vs'_r7c, vs'_a1hj), ([], ns'_r7d, ns'_a1hk)] (vs'_a1hj, ns'_a1hk) = dfs_a1m7 r_r74 (PrelBase.:{-55,p-}{i} t{-a1h2-} x_r79 vs_r76, PrelBase.[]{-5i,p-}{i} t{-a1h2-}) r_r74 x_r79 {- nonrec -} {- nonrec -} span_tree_a1m4 = span_tree_r6I vertex{-a1gK-} d.Eq_a1jv {- rec -} AbsBinds [t{-a1hV-}, t{-a1i0-}] [d.Eq_a1ig] [([t{-a1hV-}, t{-a1i0-}], new_range_r6H, new_range_a1hN)] ==_a1m9 = PrelBase.=={-8Y,p-} t{-a1i0-} d.Eq_a1ig new_range_a1hN PrelBase.[]{-5i,p-}{i} w_r6Q = PrelBase.[]{-5i,p-}{i} t{-a1hV-} new_range_a1hN ((x_r6S, y_r6T) PrelBase.:{-55,p-}{i} xys_r6U) w_r6W = if x_r6S ==_a1m9 w_r6W then PrelBase.:{-55,p-}{i} t{-a1hV-} y_r6T (new_range_a1hN xys_r6U w_r6W) else new_range_a1hN xys_r6U w_r6W {- nonrec -} new_range_a1m6 = new_range_r6H [vertex{-a1gK-}, vertex{-a1gK-}] d.Eq_a1jq new_range_a1m5 = new_range_r6H [vertex{-a1gK-}, vertex{-a1gK-}] d.Eq_a1jr {- nonrec -} AbsBinds [v{-a1iv-}] [] [([v{-a1iv-}], swap_r6G, swap_a1im)] swap_a1im (x_r6M, y_r6N) = (y_r6N, x_r6M) {- nonrec -} {- nonrec -} AbsBinds [] [] [([], reversed_edges_r6F, reversed_edges_a1iy)] reversed_edges_a1iy = map_a1lN [Edge{-r8K,x-} vertex{-a1gK-}, Edge{-r8K,x-} vertex{-a1gK-}] swap_r6G vertex{-a1gK-} es_r6B {- nonrec -} {- nonrec -} {- nonrec -} AbsBinds [vertex{-a1jI-}] [d.Eq_a1kA] [([vertex{-a1jI-}], topSort{-r6t,x-}, topSort_a1jF)] d.Eq_a1kI = d.Eq_a1kA isCyclic_a1mb = isCyclic{-r6s,x-} vertex{-a1jI-} d.Eq_a1kI d.Eq_a1kK = d.Eq_a1kA stronglyConnComp_a1ma = stronglyConnComp{-r6r,x-} vertex{-a1jI-} d.Eq_a1kK topSort_a1jF edges_r7E vertices_r7G = case cycles_r7J of PrelBase.[]{-5i,p-}{i} -> Succeeded{-r4G,x-}{i} [[vertex{-a1jI-}], [[vertex{-a1jI-}]]] [ v_r7N | [v_r7N] <- singletons_r7K ] _ -> Failed{-r4F,x-}{i} [[vertex{-a1jI-}], [[vertex{-a1jI-}]]] cycles_r7J where {- nonrec -} AbsBinds [] [] [([], sccs_r7I, sccs_a1jM)] sccs_a1jM = stronglyConnComp_a1ma edges_r7E vertices_r7G {- nonrec -} {- nonrec -} AbsBinds [] [] [([], cycles_r7J, cycles_a1jT), ([], singletons_r7K, singletons_a1jU)] (cycles_a1jT, singletons_a1jU) = List.partition{-rhM,p-} [vertex{-a1jI-}] isCyclic_a1mb edges_r7E sccs_r7I {- nonrec -} {- nonrec -} {- nonrec -} AbsBinds [vertex{-a1kQ-}] [] [([vertex{-a1kQ-}], mkDigraph{-r6z,x-}, mkDigraph_a1kM)] mkDigraph_a1kM = MkDigraph{-r8L,x-}{i} vertex{-a1kQ-} {- nonrec -} ghc: module version changed to 1; reason: no old .hi file _interface_ Digraphs 1 _instance_modules_ ArrBase Foreign IO PrelNum _usages_ List 1 :: partition 1; PrelBase 1 :: $d14 1 $d15 1 $d22 1 $d23 1 $d24 1 $d25 1 $d26 1 $d27 1 $d32 1 $d34 1 $d37 1 $d39 1 $d41 1 $d44 1 $d45 1 $d46 1 $d49 1 $d51 1 $d6 1 $d7 1 otherwise 1 Eq 1 Eval 1 Functor 1 Monad 1 MonadPlus 1 MonadZero 1 Ord 1 Ordering 1; PrelList 1 :: elem 1 head 1; PrelNum 1 :: $d17 1 $d18 1; PrelTup 1 :: $d11 1 $d13 1 $d15 1 $d49 1 $d51 1 $d9 1 snd 1; Set 2 :: $d1 2 elementOf 2 setToList 2 Set 1; _exports_ Digraphs dfs isCyclic isRecursiveCycle lookupVertex mkDigraph mkEdges mkVertices stronglyConnComp topSort Cycle Digraph(MkDigraph) Edge FlattenedDependencyInfo MaybeErr(Succeeded Failed); _instances_ instance _forall_ [a b] => {PrelBase.Eval (MaybeErr a b)} = $d1; instance _forall_ [a] => {PrelBase.Eval (Digraph a)} = $d2; _declarations_ 1 $d1 _:_ _forall_ [a b] => {PrelBase.Eval (MaybeErr a b)} ;; 1 $d2 _:_ _forall_ [a] => {PrelBase.Eval (Digraph a)} ;; 1 type Cycle r8C = [r8C] ; 1 data Digraph r8G = MkDigraph [r8G] ; 1 type Edge r8E = (r8E, r8E) ; 1 type FlattenedDependencyInfo r8y r8z r8A = [(r8y, Set.Set r8z, Set.Set r8z, r8A)] ; 1 data MaybeErr r8v r8w = Succeeded r8v | Failed r8w ; 1 dfs _:_ _forall_ [a] {PrelBase.Eq a} => (a -> [a]) -> ([a], [a]) -> [a] -> ([a], [a]) ;; 1 isCyclic _:_ _forall_ [a] {PrelBase.Eq a} => [Edge a] -> [a] -> PrelBase.Bool ;; 1 isRecursiveCycle _:_ _forall_ [a] {PrelBase.Eq a} => Cycle a -> [Edge a] -> PrelBase.Bool ;; 1 lookupVertex _:_ _forall_ [a b c] {PrelBase.Eq b, PrelBase.Ord a} => FlattenedDependencyInfo b a c -> b -> c ;; 1 mkDigraph _:_ _forall_ [a] => [a] -> Digraph a ;; 1 mkEdges _:_ _forall_ [a b c] {PrelBase.Eq c, PrelBase.Ord a} => [c] -> FlattenedDependencyInfo c a b -> [Edge c] ;; 1 mkVertices _:_ _forall_ [a b c] => FlattenedDependencyInfo c a b -> [c] ;; 1 stronglyConnComp _:_ _forall_ [a] {PrelBase.Eq a} => [Edge a] -> [a] -> [[a]] ;; 1 topSort _:_ _forall_ [a] {PrelBase.Eq a} => [Edge a] -> [a] -> MaybeErr [a] [[a]] ;;