ToC DocOverview CGDoc RelNotes Index PermutedIndex
Allegro CL

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.

?

append, concatenate

Allegro CL Implementation Details:
None.

© Franz Inc. 1998-2019 - File last updated 02-07-2019