对象____不适用

时间:2018-04-05 00:25:38

标签: scheme lisp

我一直在接收"对象5.32不适用"运行后(主1 2)然后输入2,最后输出-1。 5.32是正确的答案。它只是抛出提到的错误。 (应该返回;值5.32)。

我认为我的问题可能出在我的税务职能部门,但我不确定。有什么建议吗?

(define (add total num)(+ total num))
(define (tax total) (* total 1.065))

(define (main total x) 
  (if (= x -1) 
     (tax total)
  ((let ((z (add total x)))(let ((y (read)))(main z y))))
  )
)

是的,我已经查了herehere,但两个位置都没有以一般格式回答问题。

1 个答案:

答案 0 :(得分:2)

if中第三个表达式周围有一组额外的括号。语法是:

(if <condition>
    <true-expression>
    <false-expression>)

但你写道:

(if <condition>
    <true-expression>
    (<false-expression>))

将表达式放在括号中会将其转换为过程调用,并尝试将let返回的值用作过程。

也不需要使用多个let,您可以一次绑定多个变量。

(define (main total x) 
  (if (= x -1) 
      (tax total)
      (let ((z (add total x))
            (y (read)))
          (main z y)))))