use correct name for topological sort

This commit is contained in:
Alex Kladov 2024-06-23 19:06:25 +01:00
parent a2f0a06426
commit 3348fed19c
4 changed files with 9 additions and 9 deletions

View file

@ -21,7 +21,7 @@ lib: {
## Apply a topological sort to a DAG.
##
## @type Dag a -> { result :: List a } | { cycle :: List a, loops :: List a }
topographic =
topological =
graph:
let
getEntriesBefore =
@ -43,7 +43,7 @@ lib: {
isBefore = a: b: builtins.elem a.name b.after;
sorted = lib.lists.sort.topographic isBefore entries;
sorted = lib.lists.sort.topological isBefore entries;
in
if sorted ? result then
{

View file

@ -119,11 +119,11 @@ in
};
"sort" = {
"topographic" = {
"topological" = {
"handles an empty graph" =
let
expected = [ ];
actual = lib.dag.sort.topographic { };
actual = lib.dag.sort.topological { };
in
actual.result == expected;
@ -147,7 +147,7 @@ in
value = "d";
}
];
actual = lib.dag.sort.topographic {
actual = lib.dag.sort.topological {
a = lib.dag.entry.anywhere "a";
b = lib.dag.entry.between [ "c" ] [ "a" ] "b";
c = lib.dag.entry.before [ "c" ] "c";

View file

@ -31,15 +31,15 @@ lib: {
in
builtins.map (x: builtins.elemAt x 1) (builtins.sort isLess prepared);
## Perform a topographic sort on a list of items. The predicate function determines whether
## Perform a topological sort on a list of items. The predicate function determines whether
## its first argument comes before the second argument.
##
## @type (a -> a -> Bool) -> List a -> List a
topographic =
topological =
predicate: list:
let
searched = lib.lists.search.depthFirst true predicate list;
results = lib.lists.sort.topographic predicate (searched.visited ++ searched.rest);
results = lib.lists.sort.topological predicate (searched.visited ++ searched.rest);
in
if builtins.length list < 2 then
{ result = list; }

View file

@ -15,7 +15,7 @@ in
package:
let
phases = package.phases;
sorted = lib.dag.sort.topographic phases;
sorted = lib.dag.sort.topological phases;
script = lib.strings.concatMapSep "\n" (
entry: if builtins.isFunction entry.value then entry.value package else entry.value