Next: , Previous: , Up: Common List Functions   [Contents][Index]


7.2.1.1 List construction

Function: make-list k
Function: make-list k init

make-list creates and returns a list of k elements. If init is included, all elements in the list are initialized to init.

Example:

(make-list 3)
   ⇒ (#<unspecified> #<unspecified> #<unspecified>)
(make-list 5 'foo)
   ⇒ (foo foo foo foo foo)
Function: list* obj1 obj2 …

Works like list except that the cdr of the last pair is the last argument unless there is only one argument, when the result is just that argument. Sometimes called cons*. E.g.:

(list* 1)
   ⇒ 1
(list* 1 2 3)
   ⇒ (1 2 . 3)
(list* 1 2 '(3 4))
   ⇒ (1 2 3 4)
(list* args '())
   ≡ (list args)
Function: copy-list lst

copy-list makes a copy of lst using new pairs and returns it. Only the top level of the list is copied, i.e., pairs forming elements of the copied list remain eq? to the corresponding elements of the original; the copy is, however, not eq? to the original, but is equal? to it.

Example:

(copy-list '(foo foo foo))
   ⇒ (foo foo foo)
(define q '(foo bar baz bang))
(define p q)
(eq? p q)
   ⇒ #t
(define r (copy-list q))
(eq? q r)
   ⇒ #f
(equal? q r)
   ⇒ #t
(define bar '(bar))
(eq? bar (car (copy-list (list bar 'foo))))
⇒ #t