== Traversal == This is a Chicken Scheme egg which contains various list and vector traversal functions. Many of the functions provided by this egg originate from Jeff Siskind's QobiScheme. === overall === The final character of many of these functions denotes the compairson function being used. 'q' compares with 'eq?', 'v' compares with 'eqv?', 'e' with 'equal?', 'p' and the lack of a final character denotes that the function takes a user-provided predicate. The following documentation uses the following notation: 'l' list, 'n' number, 'v' vector, 'p' procedure (usually a predicate). Some of the functionality of this egg is provided by other eggs, like srfi-1, with different naming conventions. ==== lists ==== :(countq x l) :(countv x l) :(counte x l) :(countp p x l) :(count-if p l) :(count-if-not p l) :(findq x l) :(findv x l) :(finde x l) :(findp p x l) :(find-if p l) :(find-if-not p l) :(positionq x l) :(positionv x l) :(positione x l) :(position p l) :(positionp p x l) :(position-if p l) :(position-if-not p l) :(vector-positione val vector) :(remove-if p l) :(remove-if-not p l) :(removee x l) :(removep p x l) :(removeq x l) :(removev x l) :(remove-duplicatesq l) :(remove-duplicatesv l) :(remove-duplicates p l) :(remove-duplicatese x l) :(list-set! l i x) :(list-insert l i x) :(list-remove l i) :(list-replace l i x) :(equivalence-classesq x) :(equivalence-classesv x) :(equivalence-classes p x) :(equivalence-classese x) :(transitive-equivalence-classes p x) :(adjoinq x l) :(adjoinv x l) :(adjoin x l) :(adjoinp p x l) :(rest l) :(but-last l) :(sublist list start end) :(every-other list) :(take-until p l) :(drop-until p l) Misc list manipulation stuff. :(group-by key l) Find equivalence classes of the elements of l that are ''equal?'' given output of ''key''. :(sort list predicate key) Merge sort. :(lexicographically