7.5.3.4 Length, Append, Concatenate, etc.

Scheme Procedure: length+ lst

Return the length of the argument list lst. When lst is a circular list, #f is returned.

Scheme Procedure: concatenate list-of-lists
Scheme Procedure: concatenate! list-of-lists

Construct a list by appending all lists in list-of-lists.

concatenate! may modify the structure of the given lists in order to produce the result.

concatenate is the same as (apply append list-of-lists). It exists because some Scheme implementations have a limit on the number of arguments a function takes, which the apply might exceed. In Guile there is no such limit.

Scheme Procedure: append-reverse rev-head tail
Scheme Procedure: append-reverse! rev-head tail

Reverse rev-head, append tail to it, and return the result. This is equivalent to (append (reverse rev-head) tail), but its implementation is more efficient.

(append-reverse '(1 2 3) '(4 5 6)) ⇒ (3 2 1 4 5 6)

append-reverse! may modify rev-head in order to produce the result.

Scheme Procedure: zip lst1 lst2 …

Return a list as long as the shortest of the argument lists, where each element is a list. The first list contains the first elements of the argument lists, the second list contains the second elements, and so on.

Scheme Procedure: unzip1 lst
Scheme Procedure: unzip2 lst
Scheme Procedure: unzip3 lst
Scheme Procedure: unzip4 lst
Scheme Procedure: unzip5 lst

unzip1 takes a list of lists, and returns a list containing the first elements of each list, unzip2 returns two lists, the first containing the first elements of each lists and the second containing the second elements of each lists, and so on.

Scheme Procedure: count pred lst1 lst2 …

Return a count of the number of times pred returns true when called on elements from the given lists.

pred is called with N parameters (pred elem1elemN ), each element being from the corresponding list. The first call is with the first element of each list, the second with the second element from each, and so on.

Counting stops when the end of the shortest list is reached. At least one list must be non-circular.