Прежде всего у вас слишком много скобок после eq?
- то, что вы написали, означает оценку (quotient (car a) (car b))
и обработку его как функции с аргументом (quotient (car (cdr a)) (car (cdr b)))
.Ошибка означает, что первое значение было оценено как 1
, и ваш интерпретатор ожидал, что это будет процедура, а не целое число.Эта строка должна быть:
(if (eq? (quotient (car a) (car b)) (quotient (car (cdr a)) (car (cdr b))))
или даже:
(if (eq? (quotient (car a) (car b)) (quotient (cadr a) (cadr b)))
Кроме того, строки с вызовами display
неверны - схема не имеет инфиксной записи, поэтому +
и *
не на своем месте.