projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Optimise Digraph.postOrd, used when finding strongly connected components
[ghc-hetmet.git]
/
compiler
/
utils
/
Digraph.lhs
diff --git
a/compiler/utils/Digraph.lhs
b/compiler/utils/Digraph.lhs
index
cde008a
..
c5c9b57
100644
(file)
--- a/
compiler/utils/Digraph.lhs
+++ b/
compiler/utils/Digraph.lhs
@@
-323,17
+323,17
@@
preArr bnds = tabulate bnds . preorderF
------------------------------------------------------------
\begin{code}
------------------------------------------------------------
\begin{code}
---postorder :: Tree a -> [a]
-postorder (Node a ts) = postorderF ts ++ [a]
+postorder :: Tree a -> [a] -> [a]
+postorder (Node a ts) = postorderF ts . (a :)
-postorderF :: Forest a -> [a]
-postorderF ts = concat (map postorder ts)
+postorderF :: Forest a -> [a] -> [a]
+postorderF ts = foldr (.) id $ map postorder ts
-postOrd :: Graph -> [Vertex]
-postOrd = postorderF . dff
+postOrd :: Graph -> [Vertex]
+postOrd g = postorderF (dff g) []
-topSort :: Graph -> [Vertex]
-topSort = reverse . postOrd
+topSort :: Graph -> [Vertex]
+topSort = reverse . postOrd
\end{code}
\end{code}