这两个运算符的计算器有什么问题?

whats is wrong with this two operator calculator?

我想编写一个名为 twoOperatorCalculator 的过程,它将计算左关联中缀加法和减法运算。操作以列表的形式给出,输出应该是这些操作的结果。以下是此过程的示例输出:

1 ]=> (twoOperatorCalculator '(1 + 15 − 32/5 + −2))'<br/>
Value : 38/5<br/>

我试了很多,但我找不到我的错。错误就像

1 ]=> (twooperatorcalculator '(1+2-3+2))'

;The object (1+2-3+2) is not applicable.

我的代码

(define twooperatorcalculator 
  (lambda (exp) (
    (cond
      ((null? exp) 0)
      ((null? (cdr (cdr exp))) (car exp))
      ((eq? #\+ (cadr exp)) (+ (car (exp)) twooperatorcalculator (cdr (cdr exp))))
      ((eq? #\- (cadr exp)) (- (car (exp)) twooperatorcalculator (cdr (cdr exp))))))))
(exp)

您将 exp 括在括号中,这意味着您要求解释器调用当前绑定到 exp 的函数。但是 exp 是一个列表,不能被调用。您需要删除括号。

(... twooperatorcalculator ...)

紧接着,您有 twooperatorcalculator,即 而不是 括在括号中,这意味着您要计算符号。这里会绑定一个函数对象,对于+操作没有意义。您需要将其括在括号中以递归调用该函数。