2011-10-25 11 views
1

我試圖從我的書中運行這個方案程序,但每當我嘗試評估(減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))) 
    ) 
) 

回答

5

它看起來像你想打電話

(eval-expr '(minus 5 4)) 

eval-expr函數接受數據表示算術表達式。另一方面,您的示例(minus 5 4)代碼,它試圖調用一個名爲minus的函數。

+0

看起來像我明白了。 (eval-expr'(減5 4))謝謝! – user1011861

+1

請記住接受答案。 – soegaard