forked from auxolotl/labs
use correct name for topological sort (#5)
I am 0.8 sure this is a typo, I've never seen this being referred to as topographic sorting! Reviewed-on: auxolotl/labs#5 Reviewed-by: Jake Hamilton <jake.hamilton@hey.com> Co-authored-by: Alex Kladov <aleksey.kladov@gmail.com> Co-committed-by: Alex Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
parent
a2f0a06426
commit
8233d4aedf
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue