scheme - 对象 ____ 不适用

标签 scheme lisp

<分区>

运行 (main 1 2) 然后输入 2 最后输入 -1 后,我一直收到“对象 5.32 不适用”。 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 ,尽管这两个位置都没有以一般格式回答问题。

最佳答案

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

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

但是你写道:

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

将表达式放在括号中会将其变成过程调用,它会尝试将 let 返回的值用作过程。

也没有必要使用多个 let,您可以一次绑定(bind)多个变量。

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

关于scheme - 对象 ____ 不适用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49662360/

相关文章:

time-complexity - 什么是增长顺序以及如何计算它?

lisp - 什么时候在Lisp中使用'(或引用)?

loops - 方案while循环

arrays - LISP 创建数组

functional-programming - 创建元素出现在列表中的所有索引列表的函数

lisp - 在 clisp 中返回一个 lambda 函数,然后对其进行评估

scheme - 更改 Racket 中的当前输入端口

functional-programming - SICP DrScheme 中的哪种语言?

scheme - 如何从此列表中过滤空值?

list - 方案相当于元组拆包是什么?