ToC DocOverview CGDoc RelNotes Index PermutedIndex
Allegro CL version 8.0
Home Previous Up Next Table of Contents Index
  ANSI Common Lisp   14 Conses   14.2 Dictionary of Conses

14.2.25 nconc Function

Syntax:
nconc &rest lists    concatenated-list

Arguments and Values:
list - each but the last must be a list (which might be a dotted list but must not be a circular list); the last list may be any object.

concatenated-list - a list.

Description:
Returns a list that is the concatenation of lists. If no lists are supplied, (nconc) returns nil. nconc is defined using the following recursive relationship:

 (nconc)  ()
 (nconc nil . lists) ==(nconc . lists)
 (nconc list)  list
 (nconc list-1 list-2) ==(progn (rplacd (last list-1) list-2) list-1)
 (nconc list-1 list-2 . lists) ==(nconc (nconc list-1 list-2) . lists)

Examples:
 (nconc)   NIL
 (setq x '(a b c))  (A B C)
 (setq y '(d e f))  (D E F)
 (nconc x y)  (A B C D E F)
 x  (A B C D E F)
Note, in the example, that the value of x is now different, since its last cons has been rplacd'd to the value of y. If (nconc x y) were evaluated again, it would yield a piece of a circular list, whose printed representation would be (A B C D E F D E F D E F ...), repeating forever; if the *print-circle* switch were non-nil, it would be printed as (A B C . #1=(D E F . #1#)).

 (setq foo (list 'a 'b 'c 'd 'e)
       bar (list 'f 'g 'h 'i 'j)
       baz (list 'k 'l 'm))  (K L M)
 (setq foo (nconc foo bar baz))  (A B C D E F G H I J K L M)
 foo  (A B C D E F G H I J K L M)
 bar  (F G H I J K L M)
 baz  (K L M)

 (setq foo (list 'a 'b 'c 'd 'e)
       bar (list 'f 'g 'h 'i 'j)
       baz (list 'k 'l 'm))  (K L M)
 (setq foo (nconc nil foo bar nil baz))  (A B C D E F G H I J K L M) 
 foo  (A B C D E F G H I J K L M)
 bar  (F G H I J K L M)
 baz  (K L M)

Side Effects:
The lists are modified rather than copied.

?

See Also:
append, concatenate

Allegro CL Implementation Details:
None.

Home Previous Up Next Table of Contents Index
© Franz Inc. 1998-2005 - File last updated 6-21-2002