Previous: , Up: SRFI   [Contents][Index] SRFI-1

(require 'srfi-1)

Implements the SRFI-1 list-processing library as described at


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, ….


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


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 …


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


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


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 …

Previous: , Up: SRFI   [Contents][Index]