Previous: SRFI, Up: SRFI


7.4.13.1 SRFI-1

(require 'srfi-1) Implements the SRFI-1 list-processing library as described at http://srfi.schemers.org/srfi-1/srfi-1.html

Constructors

— Function: xcons d a

(define (xcons d a) (cons a d)).

— Function: list-tabulate len proc

Returns a list of length len. Element i is (proc i) for 0 <= i < len.

— Function: cons* obj1 obj2
— Function: list-copy flist
— Function: iota count start step
— Function: iota count start
— Function: iota count

Returns a list of count numbers: (start, start+step, ..., start+(count-1)*step).

— Function: circular-list obj1 obj2 ...

Returns a circular list of obj1, obj2, ....

Predicates

— Function: proper-list? obj
— Function: circular-list? x
— Function: dotted-list? obj
— Function: null-list? obj
— Function: not-pair? obj
— Function: list= =pred list ...

Selectors

— Function: first pair
— Function: second pair
— Function: third pair
— Function: fourth pair
— Function: fifth pair
— Function: sixth pair
— Function: seventh pair
— Function: eighth pair
— Function: ninth pair
— Function: tenth pair
— Function: car+cdr pair
— Function: drop lst k
— Function: take lst k
— Function: take! lst k
— Function: take-right lst k
— Function: drop-right lst k
— Procedure: drop-right! lst k
— Function: split-at lst k
— Function: split-at! lst k
— Function: last lst k ...

Miscellaneous

— Function: length+ clist
— Function: concatenate lists
— Function: concatenate! lists
— Procedure: reverse! lst
— Function: append-reverse rev-head tail
— Function: append-reverse! rev-head tail
— Function: zip list1 list2 ...
— Function: unzip1 lst
— Function: unzip2 lst
— Function: unzip3 lst
— Function: unzip4 lst
— Function: unzip5 lst
— Function: count pred list1 list2 ...

Fold and Unfold

— Function: fold kons knil clist1 clist2 ...
— Function: fold-right kons knil clist1 clist2 ...
— Function: pair-fold kons knil clist1 clist2 ...
— Function: pair-fold-right kons knil clist1 clist2 ...
— Function: reduce arg ...
— Procedure: map! f clist1 clist2 ...
— Function: pair-for-each f clist1 clist2 ...

Filtering and Partitioning

— Function: filter pred list
— Procedure: filter! pred list
— Function: partition pred list
— Function: remove pred list
— Procedure: partition! pred list
— Procedure: remove! pred list

Searching

— Function: find pred clist
— Function: find-tail pred clist
— Function: span pred list
— Procedure: span! pred list
— Function: break pred list
— Procedure: break! pred list
— Function: any pred clist1 clist2 ...
— Function: list-index pred clist1 clist2 ...
— Function: member obj list =
— Function: member obj list

Deleting

— Function: delete-duplicates x list =
— Function: delete-duplicates x list
— Procedure: delete-duplicates! x list =
— Procedure: delete-duplicates! x list

Association lists

— Function: assoc obj alist pred
— Function: assoc obj alist
— Function: alist-cons key datum alist
— Function: alist-copy alist
— Function: alist-delete key alist =
— Function: alist-delete key alist
— Procedure: alist-delete! key alist =
— Procedure: alist-delete! key alist

Set operations

— Function: lset<= = list1 ...

Determine if a transitive subset relation exists between the lists list1 ..., using = to determine equality of list members.

— Function: lset= = list1 list2 ...
— Function: lset-adjoin list elt1 ...
— Function: lset-union = list1 ...
— Function: lset-intersection = list1 list2 ...
— Function: lset-difference = list1 list2 ...
— Function: lset-xor = list1 ...
— Function: lset-diff+intersection = list1 list2 ...

These are linear-update variants. They are allowed, but not required, to use the cons cells in their first list parameter to construct their answer. lset-union! is permitted to recycle cons cells from any of its list arguments.

— Procedure: lset-intersection! = list1 list2 ...
— Procedure: lset-difference! = list1 list2 ...
— Procedure: lset-union! = list1 ...
— Procedure: lset-xor! = list1 ...
— Procedure: lset-diff+intersection! = list1 list2 ...