Эта рекурсивная функция, кажется, работает правильно, добавляя в список результатов точные буквы, которые я хочу, B и C, и затем, когда она завершает, она правильно видит, что последний элемент был достигнут.
Затем выполняется базовый вариант, и возникает ошибка, которую я не могу объяснить. Что вызывает эту ошибку?
(define(preceding-R X Vector result)
(if (eq? '() (cdr (vector->list Vector)))
result
(helper X Vector result)))
(define (helper X Vector result)
(if(eqv? X (cadr (vector->list Vector))) ((set! result (cons result (car (vector->list Vector)))) (preceding-R X (list->vector (cdr (vector->list Vector))) result))
(preceding-R X (list->vector (cdr (vector->list Vector))) result)))
(preceding-R 'a #(b a c a) '()))
Ошибка:
процедура применения: ожидаемая процедура, учитывая: #; аргументы были: (((). б). в)