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 …