如何获取列表的第 N 个元素

how to get N first element of a list

我想创建一个函数来获取列表的第 N 个元素。

例如:

>>(firsts 3 '(a b c d e))

return : (a b c)

我做到了:

(define (firsts number lst)
  (let ((maliste '()))
        (if (equal? 0 number)
            maliste
            (and (set! maliste (cons (car lst) maliste)) (firsts (- number 1) (cdr lst))))))

但是它不起作用,我想我应该使用 let 但我不知道如何。

谢谢。

它要简单得多,请记住 - 您应该尝试从功能上思考。在 Lisp 中,不鼓励使用 set! (或其他改变状态的操作),递归解决方案是自然的方法。假设列表有足够的元素,这应该有效:

(define (firsts number lst)
  ; as an exercise: add an extra condition for handling the
  ; case when the list is empty before the number is zero
  (if (equal? 0 number)
      '()
      (cons (car lst)
            (firsts (- number 1) (cdr lst)))))