我正试图从我的书中运行这个方案程序,但每当我尝试评估时(减去5 4).出现错误:"引用未定义的标识符:减号".运行该函数(减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)))
)
)
Run Code Online (Sandbox Code Playgroud)
看起来你想打电话
(eval-expr '(minus 5 4))
Run Code Online (Sandbox Code Playgroud)
该eval-expr函数获取表示算术表达式的数据.另一方面,您的示例(minus 5 4)是试图调用被调用函数的代码minus.