pub type Reason(a) { DependencyCycle(List(a)) MissingNode(a) }
DependencyCycle(List(a))
MissingNode(a)
pub fn describe_reason(reason: Reason(a)) -> String
pub fn sort( graph: List(#(a, List(a))), ) -> Result(List(a), Reason(a))
topological sort of list of items