2016-01-26 2 views
1

Так я учусь использовать Buid-листделают встроенный стартовый список из определенной точки

поэтому я написал функцию:

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

обычно строят-лист начинается с 0, я понял, как чтобы исключить нуль, , но то, что я застрял, - это то, как я могу сделать начало списка из определенной точки вроде (отсчет от 7 10) для производства (список 7 8 9 10), а не начать с 1.

примечание: я не хочу использовать какую-либо рекурсию или вспомогательную функцию fu nctions ... Я хочу знать, могу ли я добиться того, чего я ищу просто из списка сборки и лямбда.

ответ

3

Более простое решение может быть написано, например:

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

Например :

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

Так мне удалось понять это, так что для кого-то еще интересно, это то, что я сделал:

(define (count-from n k) 
(filter (lambda (y) (>= y n)) (filter (lambda (n) (not(zero? n))) 
    (build-list k (lambda (n) (add1 n)))))) 
Смежные вопросы