from StdOverloaded import class <, class ==
from StdClass import class Ord, class Eq
-scc :: [(a, [a])] -> [[a]] | Eq, Ord a
+/*
+ * Find all strongly connected components using tarjan's algorithm
+ * see: https://en.wikipedia.org/wiki/Tarjan's_strongly_connected_components_algorithm
+ *
+ * @param list of nodes together with their their successors
+ * @return the strongly connected components
+ */
+scc :: ![(a, [a])] -> [[a]] | Eq, Ord a