Next: , Previous: null, Up: Conses Dictionary


14.2.25 nconc [Function]

nconc &rest listsconcatenated-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