include Topological_sort__.Topological_sort_intf.Topological_sort
module type Node = Topological_sort__.Topological_sort_intf.Node
module Edge : sig ... end
val sort : ?verbose:bool ‑> (module Node with type t = 'node) ‑> 'node list ‑> 'node Edge.t list ‑> 'node list Core_kernel.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.