Files
2026-01-25 10:10:33 +01:00

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