Ссылка на неопределенный идентификатор в схеме - PullRequest
1 голос
/ 25 октября 2011

Я пытаюсь запустить эту программу схемы из своей книги, но каждый раз, когда я пытаюсь оценить (минус 5 4).Появляется ошибка: «ссылка на неопределенный идентификатор: минус».Запуск функции as (минус 5 4), очевидно, не работает.Я неправильно назвал оценку?

(define (eval-expr E)
  (cond
    ((number? E) E)
    ((eqv? (car E) 'plus) (apply + (eval-params (cdr E))))
    ((eqv? (car E) 'times) (apply * (eval-params (cdr E))))
    ((eqv? (car E) 'minus) (apply - (eval-params (cdr E))))      
    ((eqv? (car E) 'divide) (apply / (eval-params (cdr E))))
    (else '()) ; confused - return ()
    )
  )

(define (eval-params E)
  (if (null? E) '()
      (cons (eval-expr (car E)) (eval-params (cdr E)))
      )
)

1 Ответ

5 голосов
/ 25 октября 2011

Похоже, вы хотите вызвать

(eval-expr '(minus 5 4))

Функция eval-expr принимает данные , представляющие арифметическое выражение.С другой стороны, ваш пример (minus 5 4) - это код , который пытается вызвать функцию с именем minus.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...