]> gitweb.factorcode.org Git - factor.git/commitdiff
add docs for sequences.extras (part 1)
authorrazetime <raghuallthetime@hotmail.com>
Fri, 28 Oct 2022 06:36:53 +0000 (12:06 +0530)
committerrazetime <raghuallthetime@hotmail.com>
Fri, 28 Oct 2022 06:37:37 +0000 (12:07 +0530)
extra/sequences/extras/extras-docs.factor

index 4c677954df854f20c3ca3758766164d728de9672..683633f7028e19637b976e8a3b36379eb6433474 100644 (file)
@@ -424,3 +424,994 @@ HELP: find-pred
         25\n5\n1
     ]=]
 } ;
+
+HELP: (collect-with-previous)
+{ $values
+    { "quot" quotation } { "into" object }
+    { "quot'" quotation }
+}
+{ $description "" } ;
+
+HELP: (each-integer-with-previous)
+{ $values
+    { "prev" object } { "i" integer } { "n" integer } { "quot" quotation }
+}
+{ $description "" } ;
+
+HELP: (start-all)
+{ $values
+    { "seq" sequence } { "subseq" object } { "increment" object }
+    { "indices" object }
+}
+{ $description "" } ;
+
+HELP: 2map-into
+{ $values
+    { "seq1" sequence } { "seq2" sequence } { "quot" quotation } { "into" object }
+}
+{ $description "Applies the quotation to each pair of elements in turn, yielding new elements which are collected into a new sequence having the same class as " { $snippet "into" } "." } ;
+
+HELP: 2map-sum
+{ $values
+    { "seq1" sequence } { "seq2" sequence } { "quot" quotation }
+    { "n" integer }
+}
+{ $description "Applies the quotation to each pair of elements in turn, yielding new elements which are collected into a new sequence having the same class as " { $snippet "seq1" } ". The resulting sequence is summed." } ;
+
+HELP: 2nested-each
+{ $values
+    { "seq1" sequence } { "seq2" sequence } { "quot" quotation }
+}
+{ $description "Applies quotation to all pairs of elements from " { $snippet "seq1" } " and " { $snippet "seq2" } ". Order is the same as a nested for loop." } ;
+
+HELP: 2nested-map
+{ $values
+    { "seq1" sequence } { "seq2" sequence } { "quot" quotation }
+    { "seq" sequence }
+}
+{ $description "Applies quotation to all pairs of elements from " { $snippet "seq1" } " and " { $snippet "seq2" } ", yielding new elements which are collected into a new sequence having the same class as " { $snippet "seq1" } ". Order is the same as a nested for loop." } ;
+
+HELP: 3each-from
+{ $values
+    { "seq1" sequence } { "seq2" sequence } { "seq3" sequence } { "quot" quotation } { "i" integer }
+}
+{ $description "" } ;
+
+HELP: 3map-reduce
+{ $values
+    { "seq1" sequence } { "seq2" sequence } { "seq3" sequence } { "map-quot" object } { "reduce-quot" object }
+    { "result" object }
+}
+{ $description "Applies " { $snippet "map-quot" } " to each triple of elements in turn, yielding new elements which are collected into a new sequence having the same class as " { $snippet "seq1" } ". The resultant sequence is then reduced with " { $snippet "reduce-quot" } "." } ;
+
+HELP: 3nested-each
+{ $values
+    { "seq1" sequence } { "seq2" sequence } { "seq3" sequence } { "quot" quotation }
+}
+{ $description "Applies quotation to all triples of elements from " { $snippet "seq1" } ", " { $snippet "seq2" } " and " { $snippet "seq3" } ". Order is the same as a nested for loop." } ;
+
+HELP: 3nested-map
+{ $values
+    { "seq1" sequence } { "seq2" sequence } { "seq3" sequence } { "quot" quotation }
+    { "seq" sequence }
+}
+{ $description "Applies quotation to all triples of elements from " { $snippet "seq1" } ", " { $snippet "seq2" } " and " { $snippet "seq3" } " in turn, yielding new elements which are collected into a new sequence having the same class as " { $snippet "seq1" } ". Order is the same as a nested for loop." } ;
+
+HELP: <step-slice>
+{ $values
+    { "from" integer } { "to" integer } { "step" object } { "seq" sequence }
+    { "step-slice" slice }
+}
+{ $description "Outputs a new virtual sequence sharing storage with the subrange of elements in " { $snippet "seq" } " with indices starting from and including " { $snippet "from" } ", and up to but not including " { $snippet "to" } ", with step " { $snippet "step" } "." } ;
+
+HELP: <zip-index>
+{ $values
+    { "seq" sequence }
+    { "virtual-zip-index" object }
+}
+{ $description "Outputs a new virtual sequence which pairs the elements of " { $snippet "seq" } " with their 0-based indices." } ;
+
+HELP: >string-list
+{ $values
+    { "seq" sequence }
+    { "seq'" sequence }
+}
+{ $description "Surrounds each element of " { $snippet "seq" } " in quotes and joins the sequence with commas."  } ;
+
+HELP: ?<slice>
+{ $values
+    { "from/f" { $maybe integer } } { "to/f" { $maybe integer } } { "sequence" sequence }
+    { "slice" slice }
+}
+{ $description "Outputs a new virtual sequence sharing storage with the subrange of elements in " { $snippet "seq" } " with indices starting from and including " { $snippet "from/f" } ", and up to but not including " { $snippet "to/f" } ". If either of these is not specified, they are substituted with the array's bounds: 0 and its length." } ;
+
+HELP: ?first2
+{ $values
+    { "seq" sequence }
+    { "first/f" object } { "second/f" object }
+}
+{ $description "Pushes the first two elements of " { $snippet "seq" } ". Pushes " { $snippet "f" } " for missing elements." } ;
+
+HELP: ?first3
+{ $values
+    { "seq" sequence }
+    { "first/f" object } { "second/f" object } { "third/f" object }
+}
+{ $description "Pushes the first three elements of " { $snippet "seq" } ". Pushes " { $snippet "f" } " for missing elements." } ;
+
+HELP: ?first4
+{ $values
+    { "seq" sequence }
+    { "first/f" object } { "second/f" object } { "third/f" object } { "fourth/f" object }
+}
+{ $description "Pushes the first four elements of " { $snippet "seq" } ". Pushes " { $snippet "f" } " for missing elements." } ;
+
+HELP: ?heap-pop-value>array
+{ $values
+    { "heap" object }
+    { "array" array }
+}
+{ $description "Pushes the value at the top of " { $snippet "heap" } " as a single element array. Returns an empty array if the heap is empty." } ;
+
+HELP: ?span-slices
+{ $values
+    { "slice1/f" { $maybe slice } } { "slice2/f" { $maybe slice } }
+    { "slice" slice }
+}
+{ $description "Create a virtual sequence spanning the length covered by " { $snippet "slice1" } " and " { $snippet "slice2" } ". Slices must refer to the same sequence. If " { $snippet "f" } "is one of the inputs, it is omitted." } ;
+
+HELP: ?trim
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "seq/newseq" object }
+}
+{ $description "Similar to " { $link "trim" } ", but sequences that do not require trimming are left as is." } ;
+
+HELP: ?trim-head
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "seq/newseq" object }
+}
+{ $description "Similar to " { $link "trim-head" } ", but sequences that do not require trimming are left as is." } ;
+
+HELP: ?trim-tail
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "seq/newseq" object }
+}
+{ $description "Similar to " { $link "trim-tail" } ", but sequences that do not require trimming are left as is." } ;
+
+HELP: all-longest
+{ $values
+    { "seqs" object }
+    { "seqs'" object }
+}
+{ $description "Pushes a sequence containing all of the sequences in " { $snippet "seqs" } " that have the longest length." } ;
+
+HELP: all-rotations
+{ $values
+    { "seq" sequence }
+    { "seq'" sequence }
+}
+{ $description "Pushes a sequence containing all the rotations of " { $snippet "seq" } ", including the original array." } ;
+
+HELP: all-shortest
+{ $values
+    { "seqs" object }
+    { "seqs'" object }
+}
+{ $description "Pushes a sequence containing all of the sequences in " { $snippet "seqs" } " that have the shortest length." } ;
+
+HELP: all-subseqs
+{ $values
+    { "seq" sequence }
+    { "seqs" object }
+}
+{ $description "Pushes a sequence containing all subsequences in " { $snippet "seq" } " excluding the empty sequence." } ;
+
+HELP: appender
+{ $values
+    { "quot" quotation }
+    { "appender" quotation } { "accum" vector }
+}
+{ $description "Given a quotation " { $snippet "quot" } ", creates an appender quotation and empty vector to append new sequences to it. The appender quotation will apply " { $snippet "quot" } " to its argument before appending it to the vector." } ;
+
+HELP: appender-for
+{ $values
+    { "quot" quotation } { "exemplar" object }
+    { "appender" object } { "accum" object }
+}
+{ $description "Given a quotation " { $snippet "quot" } ", creates an appender quotation and empty vector with a maximum storage limit the size of " { $snippet "exemplar" } ". The appender quotation will apply " { $snippet "quot" } " to its argument before appending it to the vector." } ;
+
+HELP: arg-sort
+{ $values
+    { "seq" sequence }
+    { "indices" object }
+}
+{ $description "Given a sequence " { $snippet "seq" } ", push a sequence of indices that when indexed into, sort the given sequence." } ;
+
+HELP: arg-where
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "indices" object }
+}
+{ $description "Push a sequence of all indices in " { $snippet "seq" } " where " { $snippet "quot" } "applied to the element at each index is true." } ;
+
+HELP: assoc-zip-with
+{ $values
+    { "seq" assoc } { "quot" quotation }
+    { "alist" "an array of key/value pairs" }
+}
+{ $description "Applies " { $snippet "quot" } " to each key-value pair in the given assoc, pushing a new assoc with the key-value pairs as keys, and the values computed by " { $snippet "quot" } " as values." } ;
+
+HELP: change-last
+{ $values
+    { "seq" sequence } { "quot" quotation }
+}
+{ $description "Applies " { $snippet "quot" } " to the last element of a sequence, modifying it in place." } ;
+
+HELP: change-last-unsafe
+{ $values
+    { "seq" sequence } { "quot" quotation }
+}
+{ $description "Applies " { $snippet "quot" } " to the last element of a sequence, modifying it in place. Does not check if the array has a last element." } ;
+
+HELP: change-nths
+{ $values
+    { "indices" object } { "seq" sequence } { "quot" quotation }
+}
+{ $description "Applies " { $snippet "quot" } " to the locations present in " { $snippet "indices" } " in sequence " { $snippet "seq" } ", modifying it in place." } ;
+
+HELP: collect-with-previous
+{ $values
+    { "n" integer } { "quot" quotation } { "into" object }
+}
+{ $description "" } ;
+
+HELP: count-head
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "n" integer }
+}
+{ $description "Count the number of values at the beginning of " { $snippet "seq" } " that return a truthy value when passed into " { $snippet "quot" } "." } ;
+
+HELP: count-tail
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "n" integer }
+}
+{ $description "Count the number of values at the beginning of " { $snippet "seq" } " that return a truthy value when passed into " { $snippet "quot" } "." } ;
+
+HELP: cut-when
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "before" object } { "after" object }
+}
+{ $description "Cut the given sequence before the first element of " { $snippet "seq" } " that returns a truthy value when passed into " { $snippet "quot" } "." } ;
+
+HELP: drop-while
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "tail-slice" object }
+}
+{ $description "Remove all values at the beginning of " { $snippet "seq" } " that return a truthy value when passed into " { $snippet "quot" } ". Return a virtual sequence containing those elements." } ;
+
+HELP: each-index-from
+{ $values
+    { "seq" sequence } { "quot" quotation } { "i" integer }
+}
+{ $description "" } ;
+
+HELP: each-integer-with-previous
+{ $values
+    { "n" integer } { "quot" quotation }
+}
+{ $description "" } ;
+
+HELP: each-prior
+{ $values
+    { "seq" sequence } { "quot" quotation }
+}
+{ $description "" } ;
+
+HELP: each-subseq
+{ $values
+    { "seq" sequence } { "quot" quotation }
+}
+{ $description "" } ;
+
+HELP: ensure-same-underlying
+{ $values
+    { "slice1" slice } { "slice2" slice }
+}
+{ $description "" } ;
+
+HELP: even-indices
+{ $values
+    { "seq" sequence }
+    { "seq'" sequence }
+}
+{ $description "Push a sequence containing the even-indexed elements in " { $snippet "seq" } "." } ;
+
+HELP: evens
+{ $class-description "The class of virtual sequences which contain the even-indexed elements of a given sequence." } ;
+
+HELP: extract!
+{ $values
+    { "seq" sequence } { "quot" quotation }
+}
+{ $description "" } ;
+
+HELP: filter-all-subseqs
+{ $values
+    { "seq" sequence } { "quot" quotation }
+}
+{ $description "Perform a filter on all the subsequences of the given sequence, and push a sequence containing the subsequences that satisfy the condition given by " { $snippet "quot" } "." } ;
+
+HELP: filter-all-subseqs-range
+{ $values
+    { "seq" sequence } { "range" object } { "quot" quotation }
+}
+{ $description "Perform a filter on all the subsequences of the given sequence that have length within " { $snippet "range" } ", and push a sequence containing the subsequences that satisfy the condition given by " { $snippet "quot" } "." } ;
+
+HELP: filter-index
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "seq'" sequence }
+}
+{ $description "Perform a " { $link "filter" } " on the given sequence, with the index provided as an additional argument to " { $snippet "quot" } "." } ;
+
+HELP: filter-index-as
+{ $values
+    { "seq" sequence } { "quot" quotation } { "exemplar" object }
+    { "seq'" sequence }
+}
+{ $description "Perform a " { $link "filter-as" } " on the given sequence, with the index provided as an additional argument to " { $snippet "quot" } ". Outputs a sequence of the same class as " { $snippet "exemplar" } "." } ;
+
+HELP: filter-length
+{ $values
+    { "seq" sequence } { "n" integer }
+    { "seq'" sequence }
+}
+{ $description "Push a sequence that contains all elements of " { $snippet "seq" } " that have length " { $snippet "n" } "." } ;
+
+HELP: filter-map
+{ $values
+    { "seq" sequence } { "filter-quot" object } { "map-quot" object }
+    { "newseq" sequence }
+}
+{ $description "Filter the given sequence with " { $snippet "filter-quot" } ", then perform a map on the filtered sequence with " { $snippet "map-quot" } "." } ;
+
+HELP: filter-map-as
+{ $values
+    { "seq" sequence } { "filter-quot" object } { "map-quot" object } { "exemplar" object }
+    { "newseq" sequence }
+}
+{ $description "Filter the given sequence with " { $snippet "filter-quot" } ", then perform a map on the filtered sequence with " { $snippet "map-quot" } ". Outputs a sequence of the same class as " { $snippet "exemplar" } "." } ;
+
+HELP: find-last-index
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "i" integer } { "elt" object }
+}
+{ $description "A simpler variant of " { $link "find-last-index-from" } ", with starting index set to 0." } ;
+
+HELP: find-last-index-from
+{ $values
+    { "n" integer } { "seq" sequence } { "quot" quotation }
+    { "i" integer } { "elt" object }
+}
+{ $description "Similar to " { $snippet "find-from" } ", except " { $snippet "quot" } " is given the index of each element, and the index of the found element is pushed along with the found element." } ;
+
+HELP: find-pred-loop
+{ $values
+    { "i" integer } { "n" integer } { "seq" sequence } { "quot" quotation }
+    { "calc/f" object } { "i/f" { $maybe integer } } { "elt/f" object }
+}
+{ $description "" } ;
+
+HELP: harvest!
+{ $values
+    { "seq" sequence }
+    { "newseq" sequence }
+}
+{ $description "Outputs a new sequence with all empty sequences removed. Modifies " { $snippet "seq" } "in place." } ;
+
+HELP: harvest-as
+{ $values
+    { "seq" sequence } { "exemplar" object }
+    { "newseq" sequence }
+}
+{ $description "Outputs a new sequence with all empty sequences removed. Resulting sequence is the same class as " { $snippet "exemplar" } "." } ;
+
+HELP: head*-as
+{ $values
+    { "seq" sequence } { "n" integer } { "exemplar" object }
+    { "seq'" sequence }
+}
+{ $description "A version of " { $link "head*" } " where " { $snippet "seq'" } " is the same class as " { $snippet "exemplar" } "." } ;
+
+HELP: head-as
+{ $values
+    { "seq" sequence } { "n" integer } { "exemplar" object }
+    { "seq'" sequence }
+}
+{ $description "A version of " { $link "head" } " where " { $snippet "seq'" } " is the same class as " { $snippet "exemplar" } "." } ;
+
+HELP: heap>pairs
+{ $values
+    { "heap" object }
+    { "pairs" object }
+}
+{ $description "Collect the pairs inside a heap into a sequence. Ordering of the sequence is based on the ordering of the heap." } ;
+
+HELP: index-selector
+{ $values
+    { "quot" quotation }
+    { "selector" object } { "accum" object }
+}
+{ $description "" } ;
+
+HELP: index-selector-as
+{ $values
+    { "quot" quotation } { "exemplar" object }
+    { "selector" object } { "accum" object }
+}
+{ $description "" } ;
+
+HELP: infimum-by*
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "i" integer } { "elt" object }
+}
+{ $description "A variant of " { $link "infimum-by" } " that pushes the index of the least element along with the least element." } ;
+
+HELP: insert-nth!
+{ $values
+    { "elt" object } { "n" integer } { "seq" sequence }
+}
+{ $description "A variant of " { $link "insert-nth" } " that modifies " { $snippet "seq" } " in place." } ;
+
+HELP: interleaved
+{ $values
+    { "seq" sequence } { "glue" object }
+    { "newseq" sequence }
+}
+{ $description "Insert " { $link "glue" } " between every pair of elements in " { $snippet "seq" } "." } ;
+
+HELP: interleaved-as
+{ $values
+    { "seq" sequence } { "glue" object } { "exemplar" object }
+    { "newseq" sequence }
+}
+{ $description "Insert " { $link "glue" } " between every pair of elements in " { $snippet "seq" } ". Resulting sequence will be the same class as " { $snippet "exemplar" } "." } ;
+
+HELP: iterate-heap-while
+{ $values
+    { "heap" object } { "quot1" quotation } { "quot2" quotation }
+    { "obj/f" { $maybe object } } { "loop?" object }
+}
+{ $description "" } ;
+
+HELP: last=
+{ $values
+    { "seq" sequence } { "elt" object }
+    { "?" boolean }
+}
+{ $description "Check if the last element of " { $snippet "seq" } " is equal to " { $snippet "elt" } "." } ;
+
+HELP: last?
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "?" boolean }
+}
+{ $description "Check if the last element of " { $snippet "seq" } " satisfies the condition given by " { $snippet "quot" } "." } ;
+
+HELP: longest-subseq
+{ $values
+    { "seq1" sequence } { "seq2" sequence }
+    { "subseq" object }
+}
+{ $description "Pushes the longest subsequence of " { $snippet "seq" } "." } ;
+
+HELP: map-concat
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "newseq" sequence }
+}
+{ $description "Perform a " { $link "map" } " on the given sequence with " { $snippet "quot" } ", then perform a " { $link "concat" } " on the result." } ;
+
+HELP: map-concat-as
+{ $values
+    { "seq" sequence } { "quot" quotation } { "exemplar" object }
+    { "newseq" sequence }
+}
+{ $description "A version of " { $link "map-concat" } " where the resultant sequence has the same class as " { $snippet "exemplar" } } ;
+
+HELP: map-filter
+{ $values
+    { "seq" sequence } { "map-quot" object } { "filter-quot" object }
+    { "subseq" object }
+}
+{ $description "Perform a " { $link "map" } " on the given sequence with " { $snippet "map-quot" } ", then perform a " { $link "filter" } " on the result with " { $snippet "filter-quot" } "." } ;
+
+HELP: map-filter-as
+{ $values
+    { "seq" sequence } { "map-quot" object } { "filter-quot" object } { "exemplar" object }
+    { "subseq" object }
+}
+{ $description "A version of " { $link "map-filter" } " where the resultant sequence has the same class as " { $snippet "exemplar" } } ;
+
+HELP: map-find-index
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "result" object } { "i" integer } { "elt" object }
+}
+{ $description "A version of " { $link "map-find" } " where the index of the found element, if any, is returned." } ;
+
+HELP: map-find-last-index
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "result" object } { "i" integer } { "elt" object }
+}
+{ $description "A version of " { $link "map-find-index" } " where the index of the found element, if any, is returned." } ;
+
+HELP: map-from
+{ $values
+    { "seq" sequence } { "quot" quotation } { "i" integer }
+    { "newseq" sequence }
+}
+{ $description "A version of " { $link "map" } " that maps the slice of " { $snippet "seq" } " beginning at index " { $snippet "i" } "." } ;
+
+HELP: map-from-as
+{ $values
+    { "seq" sequence } { "quot" quotation } { "i" integer } { "exemplar" object }
+    { "newseq" sequence }
+}
+{ $description "A version of " { $link "map-from" } " where the resultant sequence has the same class as " { $snippet "exemplar" } } ;
+
+HELP: map-harvest
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "newseq" sequence }
+}
+{ $description "A version of " { $link "map" } " with all empty sequences removed from the result." } ;
+
+HELP: map-if
+{ $values
+    { "seq" sequence } { "if-quot" object } { "map-quot" object }
+    { "newseq" sequence }
+}
+{ $description "A version of " { $link "map" } " where " { $snippet "map-quot" } " is applied only if " { $snippet "if-quot" } " returns true for a given element." } ;
+
+HELP: map-index!
+{ $values
+    { "seq" sequence } { "quot" quotation }
+}
+{ $description "A version of " { $link "map-index" } " which modifies " { $snippet "seq" } " in place." } ;
+
+HELP: map-integers-with
+{ $values
+    { "len" object } { "quot" quotation } { "exemplar" object }
+    { "newseq" sequence }
+}
+{ $description "" } ;
+
+HELP: map-like
+{ $values
+    { "seq" sequence } { "exemplar" object }
+    { "seq'" sequence }
+}
+{ $description "" } ;
+
+HELP: map-prior
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "seq'" sequence }
+}
+{ $description "" } ;
+
+HELP: map-prior-as
+{ $values
+    { "seq" sequence } { "quot" quotation } { "exemplar" object }
+    { "seq'" sequence }
+}
+{ $description "" } ;
+
+HELP: map-product
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "n" integer }
+}
+{ $description "Like " { $link "map product" } ", but without creating an intermediate sequence." } ;
+
+HELP: map-sift
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "newseq" sequence }
+}
+{ $description "A version of " { $link "map" } " with all instances of " { $link "f" } " removed from the result." } ;
+
+HELP: map-with-previous
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "newseq" sequence }
+}
+{ $description "" } ;
+
+HELP: map-with-previous-as
+{ $values
+    { "seq" sequence } { "quot" quotation } { "exemplar" object }
+    { "newseq" sequence }
+}
+{ $description "" } ;
+
+HELP: map-zip-swap
+{ $values
+    { "quot" quotation }
+    { "alist" "an array of key/value pairs" }
+}
+{ $description "" } ;
+
+HELP: max-subarray-sum
+{ $values
+    { "seq" sequence }
+    { "sum" object }
+}
+{ $description "Output the maximum subarray sum of the sequence." } ;
+
+HELP: merge-slices
+{ $values
+    { "slice1" slice } { "slice2" slice }
+    { "slice/*" object }
+}
+{ $description "" } ;
+
+HELP: nth*
+{ $values
+    { "n" integer } { "seq" sequence }
+    { "elt" object }
+}
+{ $description "Pushes the nth element of the sequence if it exists, otherwise pushes sequence length - 1." } ;
+
+HELP: nth=
+{ $values
+    { "n" integer } { "seq" sequence } { "elt" object }
+    { "?" boolean }
+}
+{ $description "Check if the nth element of " { $snippet "seq" } " is equal to " { $snippet "elt" } "." } ;
+
+HELP: nth?
+{ $values
+    { "n" integer } { "seq" sequence } { "quot" quotation }
+    { "?" boolean }
+}
+{ $description "Check if the nth element of " { $snippet "seq" } " satisfies the condition given by " { $snippet "quot" } "." } ;
+
+HELP: odd-indices
+{ $values
+    { "seq" sequence }
+    { "seq'" sequence }
+}
+{ $description "Push a sequence containing the odd-indexed elements in " { $snippet "seq" } "." } ;
+
+HELP: odds
+{ $class-description "The class of virtual sequences which contain the odd-indexed elements of a given sequence." } ;
+
+HELP: one?
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "?" boolean }
+}
+{ $description "" } ;
+
+HELP: ordered-slices-overlap?
+{ $values
+    { "slice-lt" object } { "slice-gt" object }
+    { "?" boolean }
+}
+{ $description "" } ;
+
+HELP: ordered-slices-range
+{ $values
+    { "slice-lt" object } { "slice-gt" object }
+    { "to" integer } { "from" integer }
+}
+{ $description "" } ;
+
+HELP: ordered-slices-touch?
+{ $values
+    { "slice-lt" object } { "slice-gt" object }
+    { "?" boolean }
+}
+{ $description "" } ;
+
+HELP: pad-longest
+{ $values
+    { "seq1" sequence } { "seq2" sequence } { "elt" object }
+}
+{ $description "Perform " { $link "pad-tail" } " on both sequences, padding with " { $snippet "elt" } " to the longest length between the two." } ;
+
+HELP: prepend-lines-with-spaces
+{ $values
+    { "str" string }
+    { "str'" string }
+}
+{ $description "Prepend four spaces to each line in " { $snippet "str" } "." } ;
+
+HELP: push-if*
+{ $values
+    { "elt" object } { "quot" quotation } { "accum" object }
+}
+{ $description "" } ;
+
+HELP: push-if-index
+{ $values
+    { "elt" object } { "i" integer } { "quot" quotation } { "accum" object }
+}
+{ $description "" } ;
+
+HELP: reduce-from
+{ $values
+    { "seq" sequence } { "identity" object } { "quot" quotation } { "i" integer }
+    { "result" object }
+}
+{ $description "" } ;
+
+HELP: remove-first
+{ $values
+    { "obj" object } { "seq" sequence }
+    { "seq'" sequence }
+}
+{ $description "Remove the first occurrence of " { $snippet "obj" } " in  " { $snippet "seq" } "." } ;
+
+HELP: remove-first!
+{ $values
+    { "obj" object } { "seq" sequence }
+}
+{ $description "A version of " { $link "remove-first" } " that modifies " { $snippet "seq" } " in place." } ;
+
+HELP: remove-last
+{ $values
+    { "obj" object } { "seq" sequence }
+    { "seq'" sequence }
+}
+{ $description "Remove the last occurrence of " { $snippet "obj" } " in  " { $snippet "seq" } "." } ;
+
+HELP: remove-last!
+{ $values
+    { "obj" object } { "seq" sequence }
+}
+{ $description "A version of " { $link "remove-last" } " that modifies " { $snippet "seq" } " in place." } ;
+
+HELP: replicate-into
+{ $values
+    { "seq" sequence } { "quot" quotation }
+}
+{ $description "" } ;
+
+HELP: reverse-as
+{ $values
+    { "seq" sequence } { "exemplar" object }
+    { "newseq" sequence }
+}
+{ $description "A version of " { $link "reverse" } " where " { $snippet "seq'" } " is the same class as " { $snippet "exemplar" } "." } ;
+
+HELP: rotate
+{ $values
+    { "seq" sequence } { "n" integer }
+    { "seq'" sequence }
+}
+{ $description "Move the first " { $snippet "n" } " elements of " { $snippet "seq" } " to the end." } ;
+
+HELP: rotate!
+{ $values
+    { "seq" sequence } { "n" integer }
+}
+{ $description "A version of " { $link "rotate!" } " that modifies " { $snippet "seq" } " in place." } ;
+
+HELP: round-robin
+{ $values
+    { "seq" sequence }
+    { "newseq" sequence }
+}
+{ $description "List all elements of " { $snippet "seq" } " in column-major order." } ;
+
+HELP: safe-subseq
+{ $values
+    { "from" integer } { "to" integer } { "seq" sequence }
+    { "subseq" object }
+}
+{ $description "A safe version of " { $link "subseq" } "." } ;
+
+HELP: selector*
+{ $values
+    { "quot" quotation }
+    { "selector" object } { "accum" object }
+}
+{ $description "" } ;
+
+HELP: selector-as*
+{ $values
+    { "quot" quotation } { "exemplar" object }
+    { "selector" object } { "accum" object }
+}
+{ $description "" } ;
+
+HELP: sequence-index-operator-last
+{ $values
+    { "n" integer } { "seq" sequence } { "quot" quotation }
+    { "quot'" quotation }
+}
+{ $description "" } ;
+
+HELP: sequence>slice
+{ $values
+    { "sequence" sequence }
+    { "slice" slice }
+}
+{ $description "Create a virtual sequence that represents the given sequence." } ;
+
+HELP: set-nths
+{ $values
+    { "value" object } { "indices" object } { "seq" sequence }
+}
+{ $description "Set the elements at all given indices to " { $snippet "value" } ". modifies " { $snippet "seq" } " in place." } ;
+
+HELP: set-nths-unsafe
+{ $values
+    { "value" object } { "indices" object } { "seq" sequence }
+}
+{ $description "Unsafe version of " { $link "set-nths" } } ;
+
+HELP: shorten*
+{ $values
+    { "vector" object } { "n" integer }
+    { "seq" sequence }
+}
+{ $description "" } ;
+
+HELP: sift!
+{ $values
+    { "seq" sequence }
+    { "newseq" sequence }
+}
+{ $description "" } ;
+
+HELP: sift-as
+{ $values
+    { "seq" sequence } { "exemplar" object }
+    { "newseq" sequence }
+}
+{ $description "" } ;
+
+HELP: slice-order-by-from
+{ $values
+    { "slice1" slice } { "slice2" slice }
+    { "slice-lt" object } { "slice-gt" object }
+}
+{ $description "" } ;
+
+HELP: slice-when
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "seq'" sequence }
+}
+{ $description "" } ;
+
+HELP: slices-don't-touch
+{ $values
+    { "slice1" slice } { "slice2" slice }
+}
+{ $description "Throws a " { $link slices-don't-touch } " error." }
+{ $error-description "" } ;
+
+HELP: slices-overlap?
+{ $values
+    { "slice1" slice } { "slice2" slice }
+    { "?" boolean }
+}
+{ $description "" } ;
+
+HELP: slices-touch?
+{ $values
+    { "slice1" slice } { "slice2" slice }
+    { "?" boolean }
+}
+{ $description "" } ;
+
+HELP: slurp-heap-while-map
+{ $values
+    { "heap" object } { "quot1" quotation } { "quot2" quotation }
+    { "seq" sequence }
+}
+{ $description "" } ;
+
+HELP: span-slices
+{ $values
+    { "slice1" slice } { "slice2" slice }
+    { "slice" slice }
+}
+{ $description "Create a virtual sequence spanning the length covered by " { $snippet "slice1" } " and " { $snippet "slice2" } ". Slices must refer to the same sequence." } ;
+
+HELP: step-slice
+{ $class-description "" } ;
+
+HELP: supremum-by*
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "i" integer } { "elt" object }
+}
+{ $description "" } ;
+
+HELP: tail*-as
+{ $values
+    { "seq" sequence } { "n" integer } { "exemplar" object }
+    { "seq'" sequence }
+}
+{ $description "" } ;
+
+HELP: tail-as
+{ $values
+    { "seq" sequence } { "n" integer } { "exemplar" object }
+    { "seq'" sequence }
+}
+{ $description "" } ;
+
+HELP: take-while
+{ $values
+    { "seq" sequence } { "quot" quotation }
+    { "head-slice" object }
+}
+{ $description "" } ;
+
+HELP: trim-as
+{ $values
+    { "seq" sequence } { "quot" quotation } { "exemplar" object }
+    { "newseq" sequence }
+}
+{ $description "" } ;
+
+HELP: underlying-mismatch
+{ $values
+    { "slice1" slice } { "slice2" slice }
+}
+{ $description "Throws an " { $link underlying-mismatch } " error." }
+{ $error-description "" } ;
+
+HELP: unordered-slices-overlap?
+{ $values
+    { "slice1" slice } { "slice2" slice }
+    { "?" boolean }
+}
+{ $description "" } ;
+
+HELP: unordered-slices-range
+{ $values
+    { "slice1" slice } { "slice2" slice }
+    { "to" integer } { "from" integer }
+}
+{ $description "" } ;
+
+HELP: unordered-slices-touch?
+{ $values
+    { "slice1" slice } { "slice2" slice }
+    { "?" boolean }
+}
+{ $description "" } ;
+
+HELP: until-empty
+{ $values
+    { "seq" sequence } { "quot" quotation }
+}
+{ $description "" } ;
+
+HELP: virtual-zip-index
+{ $class-description "" } ;
+
+HELP: with-string-lines
+{ $values
+    { "str" string } { "quot" quotation }
+    { "str'" string }
+}
+{ $description "" } ;