% Function LAST
Function LAST
last
list &optional n => tail
list - リスト。ドットリストは受け付けますが、循環リストは受け付けません。
n - 非負の整数。デフォルトは1
。
tail - オブジェクト
last
は、listの最後のn個のコンス
(最後のn要素ではありません)を返却します
もしlistが()
なら、last
は()
を返却します。
もしnが0
のとき、listを終端しているアトムが返却されます。
もしnが、listのコンスセルの数以上のとき、
listが返却されます。
(last nil) => NIL
(last '(1 2 3)) => (3)
(last '(1 2 . 3)) => (2 . 3)
(setq x (list 'a 'b 'c 'd)) => (A B C D)
(last x) => (D)
(rplacd (last x) (list 'e 'f)) x => (A B C D E F)
(last x) => (F)
(last '(a b c)) => (C)
(last '(a b c) 0) => ()
(last '(a b c) 1) => (C)
(last '(a b c) 2) => (B C)
(last '(a b c) 3) => (A B C)
(last '(a b c) 4) => (A B C)
(last '(a . b) 0) => B
(last '(a . b) 1) => (A . B)
(last '(a . b) 2) => (A . B)
なし。
なし。
listが循環リストのときの結果は未定義です。
nが非負の整数ではないとき、
型type-error
のエラーが発生します。
下記のコードは、last
の定義です。
(defun last (list &optional (n 1))
(check-type n (integer 0))
(do ((l list (cdr l))
(r list)
(i 0 (+ i 1)))
((atom l) r)
(if (>= i n) (pop r))))