使构建列表从特定点开始

make build-list start from a specific point

所以我正在学习使用buid-list

所以我写了一个函数:

(define (count-from n k)
(filter (lambda (n) (not(zero? n))) (build-list  k (lambda (n) (add1 n)))))

按照惯例构建列表从0开始,我想出了如何排除零, 但我坚持的是如何让构建列表从特定点开始 喜欢 (count-from 7 10) 产生 (list 7 8 9 10) 而不是从 1 开始。

注意:我不想使用任何递归或辅助函数...我想知道我是否可以仅通过构建列表和 lambda 实现我所寻求的。

所以我设法弄明白了,所以对于任何想知道的人,这就是我所做的:

(define (count-from n k)
 (filter (lambda (y) (>= y n)) (filter (lambda (n) (not(zero? n))) 
   (build-list k (lambda (n) (add1 n))))))

可以写一个更简单的解决方案,像这样:

(define (count-from n k)
  (build-list (add1 (- k n))
              (lambda (i) (+ i n))))

例如:

(count-from 7 10)
=> '(7 8 9 10)