Я хочу определить функцию for-n в схеме, которая принимает 3 параметра, start и stop - целые числа, а fn - функция. Я хочу, чтобы функция for-n вызывала fn с start, затем start + 1 ... и, наконец, с остановкой.
Также я хочу сохранить все значения, которые fn возвращает в список. Пожалуйста, помогите мне начать. Я опытный программист, но у меня только начинается схема обучения.
Это определение функции, которое я получил:
[править]
(define (fn a)
a
)
(define (for-n start stop fn)
(cond
((> start stop) (quote ()))
((= start stop) (list(fn start)))
(else (list(for-n (+ start 1) stop fn)))
)
)
> (for-n 3 5 fn)
(list (list (list 5)))
Когда вызывается (for-n 3 5 fn), я хочу, чтобы он вернулся
(3 4 5), что я делаю не так?
[править-2]
Спасибо всем за помощь. У меня теперь работает функция. Вот что я получил:
(define (for-n start stop fn)
(cond
((> start stop) (quote ()))
((= start stop) (list(fn start)))
(else (cons (fn start) (for-n (+ start 1) stop fn)))
)
)