我想创建一个函数来获取列表的第 N 个元素。
例如:
>>(firsts 3 '(a b c d e))
返回:(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)))))
关于scheme - 如何获取列表的第 N 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37229422/