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 …