[HARLEQUIN][Common Lisp HyperSpec (TM)] [Previous][Up][Next]


Function LAST

Syntax:

last list &optional n => tail

Arguments and Values:

list---a list, which might be a dotted list but must not be a circular list.

n---a non-negative integer. The default is 1.

tail---an object.

Description:

last returns the last n conses (not the last n elements) of list). If list is (), last returns ().

If n is zero, the atom that terminates list is returned. If n is greater than or equal to the number of cons cells in list, the result is list.

Examples:

 (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)

Side Effects: None.

Affected By: None.

Exceptional Situations:

The consequences are undefined if list is a circular list. Should signal an error of type type-error if n is not a non-negative integer.

See Also:

butlast, nth

Notes:

The following code could be used to define 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))))


The following X3J13 cleanup issues, not part of the specification, apply to this section:


[Starting Points][Contents][Index][Symbols][Glossary][Issues]
Copyright 1996, The Harlequin Group Limited. All Rights Reserved.

AltStyle によって変換されたページ (->オリジナル) /