Module (chicken sort)
This module contains several procedures which deal with sorting of sequences (i.e., lists and vectors).
merge
- merge LIST1 LIST2 LESS?procedure
- merge! LIST1 LIST2 LESS?procedure
- Joins two lists in sorted order. merge! is the destructive version of merge. LESS? should be a procedure of two arguments, that returns true if the first argument is to be ordered before the second argument. 
sort
- sort SEQUENCE LESS?procedure
- sort! SEQUENCE LESS?procedure
- Sort SEQUENCE, which should be a list or a vector. sort! is the destructive version of sort. 
sorted?
- sorted? SEQUENCE LESS?procedure
- Returns true if the list or vector SEQUENCE is already sorted. 
topological-sort
- topological-sort DAG PREDprocedure
- Sorts the directed acyclic graph dag DAG so that for every edge from vertex u to v, u will come before v in the resulting list of vertices. - DAG is a list of sublists. The car of each sublist is a vertex. The cdr is the adjacency list of that vertex, i.e. a list of all vertices to which there exists an edge from the car vertex. pred is procedure of two arguments that should compare vertices for equality. - Time complexity: O (|V| + |E|) - (topological-sort '((shirt tie belt) (tie jacket) (belt jacket) (watch) (pants shoes belt) (undershorts pants shoes) (socks shoes)) eq?) => (socks undershorts pants shoes watch shirt belt tie jacket) - If a cycle is detected during the sorting process, an exception of the condition kinds (exn runtime cycle) is thrown. 
Previous: Module (chicken repl)
Next: Module (chicken string)