module Edge : sig ... end
val sort : ?verbose:Topological_sort__.Import.bool ‑> (module Node with type t = 'node) ‑> 'node Topological_sort__.Import.list ‑> 'node Edge.t Topological_sort__.Import.list ‑> 'node Topological_sort__.Import.list Topological_sort__.Import.Or_error.t
sort (module Node) nodes edges
returns a list of nodes output
satisfying:
nodes
or edges
occurs once in output
.{ from; to_ }
is in edges
, then from
occurs before to_
in output
.output
.sort
returns Error
if there is a cycle.