23 lines
654 B
Common Lisp
23 lines
654 B
Common Lisp
(defun element-at (lst pos)
|
|
"Return the element at position POS in the list LST."
|
|
(cond
|
|
((null lst) nil)
|
|
((not (numberp pos)) nil)
|
|
((< pos 1) nil)
|
|
((= pos 1) (car lst))
|
|
(t (element-at (cdr lst) (1- pos)))))
|
|
|
|
|
|
;; Native implementation
|
|
;; (nth pos lst)
|
|
|
|
;; C-c C-k
|
|
(assert (equal (element-at '(a b c d) nil) nil))
|
|
(assert (equal (element-at '(a b c d) 0) nil))
|
|
(assert (equal (element-at '(a b c d) 5) nil))
|
|
(assert (equal (element-at nil 2) nil))
|
|
(assert (equal (element-at '(a b c d) 1) 'A))
|
|
(assert (equal (element-at '(a b c d) 2) 'B))
|
|
(assert (equal (element-at '(a b c d) 3) 'C))
|
|
(assert (equal (element-at '(a b c d) 4) 'D))
|