Я считаю, что ваша проблема в строке
('(stop))
Я думаю, у вас есть правильная идея, что вы хотите прекратить выполнение рекурсии, как только дойдете до конца, но это неспособ сделать это.Поскольку вы поместили это в двойные круглые скобки, это интерпретируется как «оценить« стоп », а затем попытаться вызвать его как функцию».Однако stop
не является функцией, поэтому возникает ошибка.
Чтобы исправить это, если вы хотите сделать возвращаемое значение списком, содержащим только stop
, используйте функцию list
:
(define enum
(lambda (start step stop)
(if (not (<= stop start))
(cons start (enum (+ start step) step stop))
(list stop)
)))
Обратите внимание, что здесь есть только один набор скобок вокруг list stop
.
Надеюсь, это поможет!