Getting the first n elements of a list in Common Lisp?
Check out the SUBSEQ
function.
* (equal (subseq '(1 20 300) 0 2)
'(1 20))
T
It may not be immediately obvious, but in Lisp, indexing starts from 0, and you're always taking half-open intervals, so this takes all the elements of the list with indices in the interval [0, 2).
The above answer is of course perfectly correct, but note that if you're using this just to compare against another list, it would be more performance-efficient to walk both lists in-place, rather than consing up a new list just to compare.
For example, in the above case, you might say:
(every #'= '(1 20 300) '(1 20))
=> t
Love,