В моем коде мне нужно использовать несколько функций и объединить их в одну, которая будет вычислять n-е простое число между a и b.Мне нужно использовать следующие функции: gen-consecutive
filter
value-at-position
.
Проблема с моим кодом состоит в том, что для функции gen-consecutive
требуется 3 параметра: функция (f) и a и b, которые действуюткак диапазон, и я не уверен, куда поместить аргумент f
в моей функции nth-prime-between
.Я продолжаю получать сообщение об ошибке «gen-последовательный: несоответствие арности» и ожидать, что вместо 2 аргументов (ab) ожидается 3 аргумента (fab)
Вот мой код:
(define (nth-prime-between a b n)
(value-at-position filter prime? (gen-consecutive a b)) n)
Вот другие функции:
(define (gen-consecutive f a b)
(if (> a b)
'()
(cons (f a) (gen-consecutive f (+ a 1) b))))
(define (filter f lst)
(cond ((null? lst) '())
((f (car lst))
(cons (car lst) (filter f (cdr lst))))
(else
(filter f (cdr lst)))))
(define (value-at-position lst k)
(cond ((null? lst) lst)
((= k 1) (car lst))
(else (value-at-position (- k 1) (cdr lst)))))