Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
module type Node = sig ... end
module Edge : sig ... end
module What : sig ... end
val sort :
?verbose:Base.Bool.t ->
(module Node with type t = 'node) ->
what:What.t ->
nodes:'node Base.List.t ->
edges:'node Edge.t Base.List.t ->
'node Base.List.t Base.Or_error.t
sort (module Nodes) ~what ~nodes ~edges
returns a list of nodes output
satisfying:
output
contains one occurrence of every node in nodes
when what = Nodes
, or one occurrence of every node in nodes
and edges
when what = Nodes_and_edge_endpoints
.{ from; to_ }
is in edges
, then from
occurs before to_
in output
.output
.sort
returns Error
if there is a cycle.
val sort_or_cycle :
?verbose:Base.Bool.t ->
(module Node with type t = 'node) ->
what:What.t ->
nodes:'node Base.List.t ->
edges:'node Edge.t Base.List.t ->
('node Base.List.t, [ `Cycle of 'node Base.List.t ]) Base.Result.t
Same as sort
, but returns the cycle if there is one.