next up previous
Next: 3.4 delete Up: 3 リスト構造の変更 Previous: 3.2 rplacd

3.3 nconc

appendと同じような形でリスト構造を変える手続きとして nconcというものがある.
(setq x '(1 2 3))
(1 2 3)
(setq y '(4 5 6))
(4 5 6)
x
(1 2 3)
y
(4 5 6)
(append x y)
(1 2 3 4 5 6)
x
(1 2 3)
y
(4 5 6)
(nconc x y)
(1 2 3 4 5 6)
x
(1 2 3 4 5 6)
y
(4 5 6)
という具合に,(nconc x y)によって, リストxの最後にリストyを繋げてゆく. nconcを自分で定義すると,
(defun my-nconc (x y)
  (rplacd (last x) y)
  x)
とすればよい. lastは,リストの最後のコンスを返す関数で,
(defun my-last (x)
  (if (null (cdr x)) x
    (my-last (cdr x))))
のように定義できるものである.
(my-last x)
(3)
(my-last y)
(6)
(my-nconc x y)
(1 2 3 4 5 6)
x
(1 2 3 4 5 6)
y
(4 5 6)


generated through LaTeX2HTML. M.Inaba 平成18年5月7日